!(function(e, t) {
  typeof exports === 'object' && typeof module === 'object'
    ? (module.exports = t())
    : typeof define === 'function' && define.amd
      ? define([], t)
      : typeof exports === 'object'
        ? (exports.Chatroom = t())
        : (e.Chatroom = t())
})(this, () => {
  return (function(e) {
    function t(r) {
      if (n[r]) return n[r].exports
      const o = (n[r] = { exports: {}, id: r, loaded: !1 })
      return e[r].call(o.exports, o, o.exports, t), (o.loaded = !0), o.exports
    }
    var n = {}
    return (t.m = e), (t.c = n), (t.p = ''), t(0)
  })([
    function(e, t, n) {
      n(69), (e.exports = n(115))
    },
    function(e, t, n) {
      let r = n(12),
        o = n(28),
        i = n(56),
        a = n(37)
      n(95)
      let s = n(5),
        c = n(10),
        u = c.getGlobal(),
        l = /\s+/
      ;(c.shouldDisplayInstallFlashHint = function() {
        const e = r.name.toLowerCase()
        if (e === 'ie') {
          let t = +r.version || 0
          return (
            (t = Math.floor(t)), t === 7 && !o.Transport.flashsocket.check()
          )
        }
        return !1
      }),
        (c.deduplicate = function(e) {
          const t = []
          return (
            e.forEach(e => {
              t.indexOf(e) === -1 && t.push(e)
            }),
            t
          )
        }),
        (c.capFirstLetter = function(e) {
          return e
            ? ((e = `${e}`), e.slice(0, 1).toUpperCase() + e.slice(1))
            : ''
        }),
        (c.guid = (function() {
          const e = function() {
            return ((65536 * (1 + Math.random())) | 0).toString(16).substring(1)
          }
          return function() {
            return e() + e() + e() + e() + e() + e() + e() + e()
          }
        })()),
        (c.extend = function(e, t, n) {
          for (const r in t)
            (typeof e[r] !== 'undefined' && n !== !0) || (e[r] = t[r])
        }),
        (c.filterObj = function(e, t) {
          const n = {}
          return (
            c.isString(t) && (t = t.split(l)),
            t.forEach(t => {
              e.hasOwnProperty(t) && (n[t] = e[t])
            }),
            n
          )
        }),
        (c.simpleClone = function(e) {
          return JSON.parse(JSON.stringify(e))
        }),
        (c.copy = function(e, t) {
          return (
            (t = t || {}),
            e
              ? (Object.keys(e).forEach(n => {
                  c.exist(e[n]) && (t[n] = e[n])
                }),
                t)
              : t
          )
        }),
        (c.copyWithNull = function(e, t) {
          return (
            (t = t || {}),
            e
              ? (Object.keys(e).forEach(n => {
                  ;(c.exist(e[n]) || c.isnull(e[n])) && (t[n] = e[n])
                }),
                t)
              : t
          )
        }),
        (c.findObjIndexInArray = function(e, t) {
          e = e || []
          let n = t.keyPath || 'id',
            r = -1
          return (
            e.some((e, o) => {
              if (a(e, n) === t.value) return (r = o), !0
            }),
            r
          )
        }),
        (c.findObjInArray = function(e, t) {
          const n = c.findObjIndexInArray(e, t)
          return n === -1 ? null : e[n]
        }),
        (c.mergeObjArray = function() {
          let e = [],
            t = [].slice.call(arguments, 0, -1),
            n = arguments[arguments.length - 1]
          c.isArray(n) && (t.push(n), (n = {}))
          const r = (n.keyPath = n.keyPath || 'id')
          for (n.sortPath = n.sortPath || r; !e.length && t.length; )
            (e = t.shift() || []), (e = e.slice(0))
          let o
          return (
            t.forEach(t => {
              t &&
                t.forEach(t => {
                  ;(o = c.findObjIndexInArray(e, {
                    keyPath: r,
                    value: a(t, r),
                  })),
                    o !== -1 ? (e[o] = c.merge({}, e[o], t)) : e.push(t)
                })
            }),
            n.notSort || (e = c.sortObjArray(e, n)),
            e
          )
        }),
        (c.cutObjArray = function(e) {
          let t = e.slice(0),
            n = arguments.length,
            r = [].slice.call(arguments, 1, n - 1),
            o = arguments[n - 1]
          c.isObject(o) || (r.push(o), (o = {}))
          let i,
            s = (o.keyPath = o.keyPath || 'id')
          return (
            r.forEach(e => {
              c.isArray(e) || (e = [e]),
                e.forEach(e => {
                  e &&
                    ((o.value = a(e, s)),
                    (i = c.findObjIndexInArray(t, o)),
                    i !== -1 && t.splice(i, 1))
                })
            }),
            t
          )
        }),
        (c.sortObjArray = function(e, t) {
          t = t || {}
          const n = t.sortPath || 'id'
          i.insensitive = !!t.insensitive
          let r,
            o,
            s,
            u = !!t.desc
          return (
            (s = c.isFunction(t.compare)
              ? t.compare
              : function(e, t) {
                  return (r = a(e, n)), (o = a(t, n)), u ? i(o, r) : i(r, o)
                }),
            e.sort(s)
          )
        }),
        (c.emptyFunc = function() {}),
        (c.isEmptyFunc = function(e) {
          return e === c.emptyFunc
        }),
        (c.notEmptyFunc = function(e) {
          return e !== c.emptyFunc
        }),
        (c.splice = function(e, t, n) {
          return [].splice.call(e, t, n)
        }),
        (c.reshape2d = function(e, t) {
          if (Array.isArray(e)) {
            c.verifyParamType('type', t, 'number')
            const n = e.length
            if (n <= t) return [e]
            for (var r = Math.ceil(n / t), o = [], i = 0; i < r; i++)
              o.push(e.slice(i * t, (i + 1) * t))
            return o
          }
          return e
        }),
        (c.flatten2d = function(e) {
          if (Array.isArray(e)) {
            let t = []
            return (
              e.forEach(e => {
                t = t.concat(e)
              }),
              t
            )
          }
          return e
        }),
        (c.dropArrayDuplicates = function(e) {
          if (Array.isArray(e)) {
            for (var t = {}, n = []; e.length > 0; ) {
              const r = e.shift()
              t[r] = !0
            }
            for (const o in t) t[o] === !0 && n.push(o)
            return n
          }
          return e
        }),
        (c.onError = function(e) {
          throw new s(e)
        }),
        (c.verifyParamPresent = function(e, t, n) {
          n = n || ''
          let r = !1
          switch (c.typeOf(t)) {
            case 'undefined':
            case 'null':
              r = !0
              break
            case 'string':
              t === '' && (r = !0)
              break
            case 'object':
              Object.keys(t).length || (r = !0)
              break
            case 'array':
              t.length
                ? t.some(e => {
                    if (c.notexist(e)) return (r = !0), !0
                  })
                : (r = !0)
          }
          r && c.onParamAbsent(n + e)
        }),
        (c.onParamAbsent = function(e) {
          c.onParamError(
            `缺少参数"${e}", 请确保参数不是 空字符串、空对象、空数组、null或undefined, 或者数组的内容不是 null/undefined`
          )
        }),
        (c.verifyParamAbsent = function(e, t, n) {
          ;(n = n || ''), void 0 !== t && c.onParamPresent(n + e)
        }),
        (c.onParamPresent = function(e) {
          c.onParamError(`多余的参数"${e}"`)
        }),
        (c.verifyParamType = function(e, t, n) {
          const r = c.typeOf(t).toLowerCase()
          c.isArray(n) || (n = [n]),
            (n = n.map(e => {
              return e.toLowerCase()
            }))
          let o = !0
          switch ((n.indexOf(r) === -1 && (o = !1), r)) {
            case 'number':
              isNaN(t) && (o = !1)
          }
          o || c.onParamInvalidType(e, n)
        }),
        (c.onParamInvalidType = function(e, t, n) {
          ;(n = n || ''),
            c.isArray(t)
              ? ((t = t.map(e => {
                  return `"${e}"`
                })),
                (t = t.join(', ')))
              : (t = `"${t}"`),
            c.onParamError(`参数"${n}${e}"类型错误, 合法的类型包括: [${t}]`)
        }),
        (c.verifyParamValid = function(e, t, n) {
          c.isArray(n) || (n = [n]),
            n.indexOf(t) === -1 && c.onParamInvalidValue(e, n)
        }),
        (c.onParamInvalidValue = function(e, t) {
          c.isArray(t) || (t = [t]),
            (t = t.map(e => {
              return `"${e}"`
            })),
            c.isArray(t) && (t = t.join(', ')),
            c.onParamError(`参数"${e}"值错误, 合法的值包括: [${t}]`)
        }),
        (c.verifyParamMin = function(e, t, n) {
          t < n && c.onParamError(`参数${e}的值不能小于${n}`)
        }),
        (c.verifyParamMax = function(e, t, n) {
          t > n && c.onParamError(`参数${e}的值不能大于${n}`)
        }),
        (c.verifyArrayMax = function(e, t, n) {
          t.length > n && c.onParamError(`参数${e}的长度不能大于${n}`)
        }),
        (c.verifyEmail = (function() {
          const e = /^\S+@\S+$/
          return function(t, n) {
            e.test(n) ||
              c.onParamError(
                `参数${t}邮箱格式错误, 合法格式必须包含@符号, @符号前后至少要各有一个字符`
              )
          }
        })()),
        (c.verifyTel = (function() {
          const e = /^[+\-()\d]+$/
          return function(t, n) {
            e.test(n) ||
              c.onParamError(
                `参数${t}电话号码格式错误, 合法字符包括+、-、英文括号和数字`
              )
          }
        })()),
        (c.verifyBirth = (function() {
          const e = /^(\d{4})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/
          return function(t, n) {
            e.test(n) ||
              c.onParamError(`参数${t}生日格式错误, 合法为"yyyy-MM-dd"`)
          }
        })()),
        (c.onParamError = function(e) {
          c.onError(e)
        }),
        (c.verifyOptions = function(e, t, n, r) {
          if (
            ((e = e || {}),
            t && (c.isString(t) && (t = t.split(l)), c.isArray(t)))
          ) {
            n = void 0 === n || !!n
            const o = n ? c.verifyParamPresent : c.verifyParamAbsent
            t.forEach(t => {
              o.call(c, t, e[t], r)
            })
          }
          return e
        }),
        (c.verifyParamAtLeastPresentOne = function(e, t) {
          if (t && (c.isString(t) && (t = t.split(l)), c.isArray(t))) {
            const n = t.some(t => {
              return c.exist(e[t])
            })
            n || c.onParamError(`以下参数[${t.join(', ')}]至少需要传入一个`)
          }
        }),
        (c.verifyParamPresentJustOne = function(e, t) {
          if (t && (c.isString(t) && (t = t.split(l)), c.isArray(t))) {
            const n = t.reduce((t, n) => {
              return c.exist(e[n]) && t++, t
            }, 0)
            n !== 1 &&
              c.onParamError(`以下参数[${t.join(', ')}]必须且只能传入一个`)
          }
        }),
        (c.verifyBooleanWithDefault = function(e, t, n, r) {
          c.undef(n) && (n = !0),
            l.test(t) && (t = t.split(l)),
            c.isArray(t)
              ? t.forEach(t => {
                  c.verifyBooleanWithDefault(e, t, n, r)
                })
              : typeof e[t] === 'undefined'
                ? (e[t] = n)
                : c.isBoolean(e[t]) || c.onParamInvalidType(t, 'boolean', r)
        }),
        (c.verifyFileInput = function(e) {
          return (
            c.verifyParamPresent('fileInput', e),
            c.isString(e) &&
              ((e = document.getElementById(e)),
              e ||
                c.onParamError(
                  '找不到要上传的文件对应的input, 请检查fileInput id'
                )),
            (e.tagName &&
              e.tagName.toLowerCase() === 'input' &&
              e.type.toLowerCase() === 'file') ||
              c.onParamError(
                '请提供正确的 fileInput, 必须为 file 类型的 input 节点'
              ),
            e
          )
        }),
        (c.verifyFileType = function(e) {
          c.verifyParamValid('type', e, c.validFileTypes)
        }),
        (c.verifyCallback = function(e, t) {
          l.test(t) && (t = t.split(l)),
            c.isArray(t)
              ? t.forEach(t => {
                  c.verifyCallback(e, t)
                })
              : e[t]
                ? c.isFunction(e[t]) || c.onParamInvalidType(t, 'function')
                : (e[t] = c.emptyFunc)
        }),
        (c.verifyFileUploadCallback = function(e) {
          c.verifyCallback(
            e,
            'uploadprogress uploaddone uploaderror uploadcancel'
          )
        }),
        (c.validFileTypes = ['image', 'audio', 'video', 'file']),
        (c.validFileExts = {
          image: ['bmp', 'gif', 'jpg', 'jpeg', 'jng', 'png', 'webp'],
          audio: [
            'mp3',
            'wav',
            'aac',
            'wma',
            'wmv',
            'amr',
            'mp2',
            'flac',
            'vorbis',
            'ac3',
          ],
          video: ['mp4', 'rm', 'rmvb', 'wmv', 'avi', 'mpg', 'mpeg'],
        }),
        (c.filterFiles = function(e, t) {
          t = t.toLowerCase()
          let n,
            r,
            o,
            i = t === 'file',
            a = []
          return (
            [].forEach.call(e, e => {
              if (i) a.push(e)
              else if (
                ((n = e.name.slice(e.name.lastIndexOf('.') + 1)),
                (r = e.type.split('/')),
                r[0] && r[1])
              ) {
                o = r[0].toLowerCase()
                let s = !1
                ;(s = o === t || c.validFileExts[t].indexOf(n) !== -1),
                  s && a.push(e)
              }
            }),
            a
          )
        })
      const p = (c.supportFormData = c.notundef(u.FormData))
      ;(c.getFileName = (function() {
        return function(e) {
          return (
            (e = c.verifyFileInput(e)),
            p ? e.files[0].name : e.value.slice(e.value.lastIndexOf('\\') + 1)
          )
        }
      })()),
        (c.sizeText = (function() {
          const e = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'BB']
          return function(t) {
            let n,
              r = 0
            do {
              t = Math.floor(100 * t) / 100
              const o = e[r]
              ;(n = t + o), (t /= 1024), r++
            } while (t > 1)
            return n
          }
        })()),
        (c.promises2cmds = function(e) {
          return e.map(e => {
            return e.cmd
          })
        }),
        (c.objs2accounts = function(e) {
          return e.map(e => {
            return e.account
          })
        }),
        (c.teams2ids = function(e) {
          return e.map(e => {
            return e.teamId
          })
        }),
        (c.objs2ids = function(e) {
          return e.map(e => {
            return e.id
          })
        }),
        (c.getMaxUpdateTime = function(e) {
          const t = e.map(e => {
            return +e.updateTime
          })
          return Math.max(...t)
        }),
        (c.genCheckUniqueFunc = function(e, t) {
          let n = [],
            r = {}
          return (
            (e = e || 'id'),
            (t = t || 1e3),
            function(o) {
              let i
              return (
                n.length >= t && ((i = n.shift()), delete r[i]),
                (i = a(o, e)),
                !r[i] && ((r[i] = !0), n.push(i), !0)
              )
            }
          )
        }),
        (c.fillPropertyWithDefault = function(e, t, n) {
          return !!c.undef(e[t]) && ((e[t] = n), !0)
        }),
        (e.exports = c)
    },
    function(e, t, n) {
      ;(function(t, r) {
        /*!
	 * @overview es6-promise - a tiny implementation of Promises/A+.
	 * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
	 * @license   Licensed under MIT license
	 *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
	 * @version   4.0.5
	 */
        !(function(t, n) {
          e.exports = n()
        })(this, () => {
          function e(e) {
            return (
              typeof e === 'function' || (typeof e === 'object' && e !== null)
            )
          }
          function o(e) {
            return typeof e === 'function'
          }
          function i(e) {
            G = e
          }
          function a(e) {
            V = e
          }
          function s() {
            return function() {
              return t.nextTick(f)
            }
          }
          function c() {
            return typeof K !== 'undefined'
              ? function() {
                  K(f)
                }
              : p()
          }
          function u() {
            let e = 0,
              t = new Q(f),
              n = document.createTextNode('')
            return (
              t.observe(n, { characterData: !0 }),
              function() {
                n.data = e = ++e % 2
              }
            )
          }
          function l() {
            const e = new MessageChannel()
            return (
              (e.port1.onmessage = f),
              function() {
                return e.port2.postMessage(0)
              }
            )
          }
          function p() {
            const e = setTimeout
            return function() {
              return e(f, 1)
            }
          }
          function f() {
            for (let e = 0; e < z; e += 2) {
              let t = ne[e],
                n = ne[e + 1]
              t(n), (ne[e] = void 0), (ne[e + 1] = void 0)
            }
            z = 0
          }
          function d() {
            try {
              const e = n(27)
              return (K = e.runOnLoop || e.runOnContext), c()
            } catch (t) {
              return p()
            }
          }
          function m(e, t) {
            let n = arguments,
              r = this,
              o = new this.constructor(y)
            void 0 === o[oe] && D(o)
            const i = r._state
            return (
              i
                ? !(function() {
                    const e = n[i - 1]
                    V(() => {
                      return I(i, o, e, r._result)
                    })
                  })()
                : O(r, o, e, t),
              o
            )
          }
          function h(e) {
            const t = this
            if (e && typeof e === 'object' && e.constructor === t) return e
            const n = new t(y)
            return M(n, e), n
          }
          function y() {}
          function g() {
            return new TypeError('You cannot resolve a promise with itself')
          }
          function v() {
            return new TypeError(
              'A promises callback cannot return that same promise.'
            )
          }
          function b(e) {
            try {
              return e.then
            } catch (t) {
              return (ce.error = t), ce
            }
          }
          function w(e, t, n, r) {
            try {
              e.call(t, n, r)
            } catch (o) {
              return o
            }
          }
          function k(e, t, n) {
            V(e => {
              let r = !1,
                o = w(
                  n,
                  t,
                  n => {
                    r || ((r = !0), t !== n ? M(e, n) : x(e, n))
                  },
                  t => {
                    r || ((r = !0), C(e, t))
                  },
                  `Settle: ${e._label || ' unknown promise'}`
                )
              !r && o && ((r = !0), C(e, o))
            }, e)
          }
          function T(e, t) {
            t._state === ae
              ? x(e, t._result)
              : t._state === se
                ? C(e, t._result)
                : O(
                    t,
                    void 0,
                    t => {
                      return M(e, t)
                    },
                    t => {
                      return C(e, t)
                    }
                  )
          }
          function S(e, t, n) {
            t.constructor === e.constructor &&
            n === m &&
            t.constructor.resolve === h
              ? T(e, t)
              : n === ce
                ? C(e, ce.error)
                : void 0 === n ? x(e, t) : o(n) ? k(e, t, n) : x(e, t)
          }
          function M(t, n) {
            t === n ? C(t, g()) : e(n) ? S(t, n, b(n)) : x(t, n)
          }
          function _(e) {
            e._onerror && e._onerror(e._result), E(e)
          }
          function x(e, t) {
            e._state === ie &&
              ((e._result = t),
              (e._state = ae),
              e._subscribers.length !== 0 && V(E, e))
          }
          function C(e, t) {
            e._state === ie && ((e._state = se), (e._result = t), V(_, e))
          }
          function O(e, t, n, r) {
            let o = e._subscribers,
              i = o.length
            ;(e._onerror = null),
              (o[i] = t),
              (o[i + ae] = n),
              (o[i + se] = r),
              i === 0 && e._state && V(E, e)
          }
          function E(e) {
            let t = e._subscribers,
              n = e._state
            if (t.length !== 0) {
              for (
                let r = void 0, o = void 0, i = e._result, a = 0;
                a < t.length;
                a += 3
              )
                (r = t[a]), (o = t[a + n]), r ? I(n, r, o, i) : o(i)
              e._subscribers.length = 0
            }
          }
          function P() {
            this.error = null
          }
          function A(e, t) {
            try {
              return e(t)
            } catch (n) {
              return (ue.error = n), ue
            }
          }
          function I(e, t, n, r) {
            let i = o(n),
              a = void 0,
              s = void 0,
              c = void 0,
              u = void 0
            if (i) {
              if (
                ((a = A(n, r)),
                a === ue ? ((u = !0), (s = a.error), (a = null)) : (c = !0),
                t === a)
              )
                return void C(t, v())
            } else (a = r), (c = !0)
            t._state !== ie ||
              (i && c
                ? M(t, a)
                : u ? C(t, s) : e === ae ? x(t, a) : e === se && C(t, a))
          }
          function j(e, t) {
            try {
              t(
                t => {
                  M(e, t)
                },
                t => {
                  C(e, t)
                }
              )
            } catch (n) {
              C(e, n)
            }
          }
          function N() {
            return le++
          }
          function D(e) {
            ;(e[oe] = le++),
              (e._state = void 0),
              (e._result = void 0),
              (e._subscribers = [])
          }
          function F(e, t) {
            ;(this._instanceConstructor = e),
              (this.promise = new e(y)),
              this.promise[oe] || D(this.promise),
              J(t)
                ? ((this._input = t),
                  (this.length = t.length),
                  (this._remaining = t.length),
                  (this._result = new Array(this.length)),
                  this.length === 0
                    ? x(this.promise, this._result)
                    : ((this.length = this.length || 0),
                      this._enumerate(),
                      this._remaining === 0 && x(this.promise, this._result)))
                : C(this.promise, R())
          }
          function R() {
            return new Error('Array Methods must be provided an Array')
          }
          function L(e) {
            return new F(this, e).promise
          }
          function U(e) {
            const t = this
            return new t(
              J(e)
                ? (n, r) => {
                    for (let o = e.length, i = 0; i < o; i++)
                      t.resolve(e[i]).then(n, r)
                  }
                : (e, t) => {
                    return t(new TypeError('You must pass an array to race.'))
                  }
            )
          }
          function B(e) {
            let t = this,
              n = new t(y)
            return C(n, e), n
          }
          function q() {
            throw new TypeError(
              'You must pass a resolver function as the first argument to the promise constructor'
            )
          }
          function W() {
            throw new TypeError(
              "Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."
            )
          }
          function H(e) {
            ;(this[oe] = N()),
              (this._result = this._state = void 0),
              (this._subscribers = []),
              y !== e &&
                (typeof e !== 'function' && q(),
                this instanceof H ? j(this, e) : W())
          }
          function $() {
            let e = void 0
            if (typeof r !== 'undefined') e = r
            else if (typeof self !== 'undefined') e = self
            else
              try {
                e = Function('return this')()
              } catch (t) {
                throw new Error(
                  'polyfill failed because global object is unavailable in this environment'
                )
              }
            const n = e.Promise
            if (n) {
              let o = null
              try {
                o = Object.prototype.toString.call(n.resolve())
              } catch (t) {}
              if (o === '[object Promise]' && !n.cast) return
            }
            e.Promise = H
          }
          let X = void 0
          X = Array.isArray
            ? Array.isArray
            : function(e) {
                return Object.prototype.toString.call(e) === '[object Array]'
              }
          var J = X,
            z = 0,
            K = void 0,
            G = void 0,
            V = function(e, t) {
              ;(ne[z] = e),
                (ne[z + 1] = t),
                (z += 2),
                z === 2 && (G ? G(f) : re())
            },
            Y = typeof window !== 'undefined' ? window : void 0,
            Z = Y || {},
            Q = Z.MutationObserver || Z.WebKitMutationObserver,
            ee =
              typeof self === 'undefined' &&
              typeof t !== 'undefined' &&
              {}.toString.call(t) === '[object process]',
            te =
              typeof Uint8ClampedArray !== 'undefined' &&
              typeof importScripts !== 'undefined' &&
              typeof MessageChannel !== 'undefined',
            ne = new Array(1e3),
            re = void 0
          re = ee ? s() : Q ? u() : te ? l() : void 0 === Y ? d() : p()
          var oe = Math.random()
              .toString(36)
              .substring(16),
            ie = void 0,
            ae = 1,
            se = 2,
            ce = new P(),
            ue = new P(),
            le = 0
          return (
            (F.prototype._enumerate = function() {
              for (
                let e = this.length, t = this._input, n = 0;
                this._state === ie && n < e;
                n++
              )
                this._eachEntry(t[n], n)
            }),
            (F.prototype._eachEntry = function(e, t) {
              let n = this._instanceConstructor,
                r = n.resolve
              if (r === h) {
                const o = b(e)
                if (o === m && e._state !== ie)
                  this._settledAt(e._state, t, e._result)
                else if (typeof o !== 'function')
                  this._remaining--, (this._result[t] = e)
                else if (n === H) {
                  const i = new n(y)
                  S(i, e, o), this._willSettleAt(i, t)
                } else
                  this._willSettleAt(
                    new n(t => {
                      return t(e)
                    }),
                    t
                  )
              } else this._willSettleAt(r(e), t)
            }),
            (F.prototype._settledAt = function(e, t, n) {
              const r = this.promise
              r._state === ie &&
                (this._remaining--, e === se ? C(r, n) : (this._result[t] = n)),
                this._remaining === 0 && x(r, this._result)
            }),
            (F.prototype._willSettleAt = function(e, t) {
              const n = this
              O(
                e,
                void 0,
                e => {
                  return n._settledAt(ae, t, e)
                },
                e => {
                  return n._settledAt(se, t, e)
                }
              )
            }),
            (H.all = L),
            (H.race = U),
            (H.resolve = h),
            (H.reject = B),
            (H._setScheduler = i),
            (H._setAsap = a),
            (H._asap = V),
            (H.prototype = {
              constructor: H,
              then: m,
              catch(e) {
                return this.then(null, e)
              },
            }),
            (H.polyfill = $),
            (H.Promise = H),
            H
          )
        })
      }.call(
        t,
        n(9),
        (function() {
          return this
        })()
      ))
    },
    function(e, t, n) {
      ;(function(t) {
        let n = "'2ddc171177c9f07e9f1d4bee49724fce9f1da9fd",
          r = "2ddc1711'",
          o = '4.7.3',
          i = '2.3.2.0125',
          a = '3.6.2',
          s = '44',
          c = 1,
          u = 'https://lbs.netease.im/lbs/webconf.jsp',
          l = t.env.NODE_ENV === 'development' ? 6e3 : 42e3,
          p = {
            info: {
              hash: n,
              shortHash: r,
              version: o,
              sdkVersion: s,
              nrtcVersion: a,
              protocolVersion: c,
            },
            agentVersion: i,
            lbsUrl: u,
            connectTimeout: l,
            xhrTimeout: l,
            socketTimeout: l,
            reconnectionDelay: 656.25,
            reconnectionDelayMax: l,
            reconnectionJitter: 0.1,
            heartbeatInterval: 18e4,
            cmdTimeout: l,
          }
        ;(p.formatSocketUrl = function(e) {
          let t = e.url,
            n = e.secure,
            r = n ? 'https' : 'http'
          return t.indexOf('http') === -1 ? `${r}://${t}` : t
        }),
          (p.fileServerUrl = 'https://nos.netease.com'),
          (p.replaceUrl = 'http://nos.netease.im'),
          (p.genUploadUrl = function(e) {
            return p.uploadUrl
              ? `${p.uploadUrl}/${e}`
              : `${p.fileServerUrl}/${e}`
          }),
          (p.genDownloadUrl = function(e, t) {
            return p.downloadUrl
              ? `${p.replaceUrl}/${e}/${t}`
              : `https://${e}.nosdn.127.net/${t}`
          }),
          (e.exports = p)
      }.call(t, n(9)))
    },
    function(e, t, n) {
      function r() {}
      function o(e, t, n) {
        ;(this.fn = e), (this.context = t), (this.once = n || !1)
      }
      function i() {
        ;(this._events = new r()), (this._eventsCount = 0)
      }
      let a = Object.prototype.hasOwnProperty,
        s = '~'
      Object.create &&
        ((r.prototype = Object.create(null)), new r().__proto__ || (s = !1)),
        (i.prototype.eventNames = function() {
          let e,
            t,
            n = []
          if (this._eventsCount === 0) return n
          for (t in (e = this._events))
            a.call(e, t) && n.push(s ? t.slice(1) : t)
          return Object.getOwnPropertySymbols
            ? n.concat(Object.getOwnPropertySymbols(e))
            : n
        }),
        (i.prototype.listeners = function(e, t) {
          let n = s ? s + e : e,
            r = this._events[n]
          if (t) return !!r
          if (!r) return []
          if (r.fn) return [r.fn]
          for (var o = 0, i = r.length, a = new Array(i); o < i; o++)
            a[o] = r[o].fn
          return a
        }),
        (i.prototype.emit = function(e, t, n, r, o, i) {
          const a = s ? s + e : e
          if (!this._events[a]) return !1
          let c,
            u,
            l = this._events[a],
            p = arguments.length
          if (l.fn) {
            switch ((l.once && this.removeListener(e, l.fn, void 0, !0), p)) {
              case 1:
                return l.fn.call(l.context), !0
              case 2:
                return l.fn.call(l.context, t), !0
              case 3:
                return l.fn.call(l.context, t, n), !0
              case 4:
                return l.fn.call(l.context, t, n, r), !0
              case 5:
                return l.fn.call(l.context, t, n, r, o), !0
              case 6:
                return l.fn.call(l.context, t, n, r, o, i), !0
            }
            for (u = 1, c = new Array(p - 1); u < p; u++)
              c[u - 1] = arguments[u]
            l.fn.apply(l.context, c)
          } else {
            let f,
              d = l.length
            for (u = 0; u < d; u++)
              switch ((l[u].once && this.removeListener(e, l[u].fn, void 0, !0),
              p)) {
                case 1:
                  l[u].fn.call(l[u].context)
                  break
                case 2:
                  l[u].fn.call(l[u].context, t)
                  break
                case 3:
                  l[u].fn.call(l[u].context, t, n)
                  break
                case 4:
                  l[u].fn.call(l[u].context, t, n, r)
                  break
                default:
                  if (!c)
                    for (f = 1, c = new Array(p - 1); f < p; f++)
                      c[f - 1] = arguments[f]
                  l[u].fn.apply(l[u].context, c)
              }
          }
          return !0
        }),
        (i.prototype.on = function(e, t, n) {
          let r = new o(t, n || this),
            i = s ? s + e : e
          return (
            this._events[i]
              ? this._events[i].fn
                ? (this._events[i] = [this._events[i], r])
                : this._events[i].push(r)
              : ((this._events[i] = r), this._eventsCount++),
            this
          )
        }),
        (i.prototype.once = function(e, t, n) {
          let r = new o(t, n || this, !0),
            i = s ? s + e : e
          return (
            this._events[i]
              ? this._events[i].fn
                ? (this._events[i] = [this._events[i], r])
                : this._events[i].push(r)
              : ((this._events[i] = r), this._eventsCount++),
            this
          )
        }),
        (i.prototype.removeListener = function(e, t, n, o) {
          const i = s ? s + e : e
          if (!this._events[i]) return this
          if (!t)
            return (
              --this._eventsCount === 0
                ? (this._events = new r())
                : delete this._events[i],
              this
            )
          const a = this._events[i]
          if (a.fn)
            a.fn !== t ||
              (o && !a.once) ||
              (n && a.context !== n) ||
              (--this._eventsCount === 0
                ? (this._events = new r())
                : delete this._events[i])
          else {
            for (var c = 0, u = [], l = a.length; c < l; c++)
              (a[c].fn !== t ||
                (o && !a[c].once) ||
                (n && a[c].context !== n)) &&
                u.push(a[c])
            u.length
              ? (this._events[i] = u.length === 1 ? u[0] : u)
              : --this._eventsCount === 0
                ? (this._events = new r())
                : delete this._events[i]
          }
          return this
        }),
        (i.prototype.removeAllListeners = function(e) {
          let t
          return (
            e
              ? ((t = s ? s + e : e),
                this._events[t] &&
                  (--this._eventsCount === 0
                    ? (this._events = new r())
                    : delete this._events[t]))
              : ((this._events = new r()), (this._eventsCount = 0)),
            this
          )
        }),
        (i.prototype.off = i.prototype.removeListener),
        (i.prototype.addListener = i.prototype.on),
        (i.prototype.setMaxListeners = function() {
          return this
        }),
        (i.prefixed = s),
        (i.EventEmitter = i),
        (e.exports = i)
    },
    function(e, t) {
      function n(e, t, n) {
        const r = this
        ;(r.message = e),
          (r.code = t),
          (r.time = new Date()),
          (r.timetag = +r.time),
          n && (r.event = n)
      }
      const r =
        typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'
          ? function(e) {
              return typeof e
            }
          : function(e) {
              return e &&
                typeof Symbol === 'function' &&
                e.constructor === Symbol &&
                e !== Symbol.prototype
                ? 'symbol'
                : typeof e
            }
      ;(n.prototype = Object.create(Error.prototype)),
        (n.prototype.name = 'NIMError'),
        (n.prototype.appendMessage = function(e) {
          const t = this
          t.message ? e && (t.message = `${e} ${t.message}`) : (t.message = e)
        })
      const o = {
        201: '客户端版本不对, 需升级sdk',
        302: '用户名或密码错误, 请检查appKey和token是否有效, account和token是否匹配',
        403: '非法操作或没有权限',
        404: '对象(用户/群/聊天室)不存在',
        405: '参数长度过长',
        408: '客户端请求超时',
        414: '参数错误',
        415: '服务不可用/没有聊天室服务器可分配',
        416: '频率控制',
        417: '重复操作',
        422: '帐号被禁用',
        500: '服务器内部错误',
        501: '数据库操作失败',
        503: '服务器繁忙',
        508: '删除有效期过了',
        509: '已失效',
        7101: '被拉黑',
        801: '群人数达到上限',
        802: '没有权限',
        803: '群不存在或未发生变化',
        804: '用户不在群里面',
        805: '群类型不匹配',
        806: '创建群数量达到限制',
        807: '群成员状态不对',
        809: '已经在群里',
        813: '因群数量限制，部分拉人成功',
        997: '协议已失效',
        998: '解包错误',
        999: '打包错误',
        9102: '通道失效',
        9103: '已经在其他端接听/拒绝过这通电话',
        11001: '对方离线, 通话不可送达',
        13002: '聊天室状态异常',
        13003: '在黑名单中',
        13004: '在禁言名单中',
        13006: '聊天室处于整体禁言状态,只有管理员能发言',
        Connect_Failed:
          '无法建立连接, 请确保能 ping/telnet 到云信服务器; 如果是IE8/9, 请确保项目部署在 HTTPS 环境下',
        Error_Internet_Disconnected: '网断了',
        Error_Connection_is_not_Established: '连接未建立',
        Error_Connection_Socket_State_not_Match: 'socket状态不对',
        Error_Timeout: '超时',
        Param_Error: '参数错误',
        No_File_Selected: '请选择文件',
        Wrong_File_Type: '文件类型错误',
        File_Too_Large: '文件过大',
        Cross_Origin_Iframe: '不能获取跨域Iframe的内容',
        Not_Support: '不支持',
        NO_DB: '无数据库',
        DB: '数据库错误',
        Still_In_Team: '还在群里',
        Session_Exist: '会话已存在',
        Session_Not_Exist: '会话不存在',
        Error_Unknown: '未知错误',
        Operation_Canceled: '操作取消',
      }
      ;[200, 406, 808, 810].forEach(e => {
        o[e] = null
      }),
        (n.genError = function(e) {
          let t = o[e]
          return (
            void 0 === t && (t = '操作失败'), t === null ? null : new n(t, e)
          )
        }),
        (n.multiInstance = function() {
          return new n('不允许初始化多个实例', 'Not_Allow_Multi_Instance')
        }),
        (n.newNetworkError = function() {
          const e = 'Error_Internet_Disconnected'
          return new n(o[e], e)
        }),
        (n.newConnectError = function(e) {
          const t = 'Connect_Failed'
          return new n(o[t] || e, t)
        }),
        (n.newConnectionError = function() {
          const e = 'Error_Connection_is_not_Established'
          return new n(o[e], e)
        }),
        (n.newSocketStateError = function() {
          const e = 'Error_Connection_Socket_State_not_Match'
          return new n(o[e], e)
        }),
        (n.newTimeoutError = function() {
          const e = 'Error_Timeout'
          return new n(o[e], e)
        }),
        (n.newFrequencyControlError = function() {
          let e = 416,
            t = new n(o[e], e)
          return (t.from = 'local'), t
        }),
        (n.newParamError = function(e) {
          const t = 'Param_Error'
          return new n(e || o[t], t)
        }),
        (n.newNoFileError = function(e) {
          const t = 'No_File_Selected'
          return new n(e || o[t], t)
        }),
        (n.newWrongFileTypeError = function(e) {
          const t = 'Wrong_File_Type'
          return new n(e || o[t], t)
        }),
        (n.newFileTooLargeError = function(e) {
          const t = 'File_Too_Large'
          return new n(e || o[t], t)
        }),
        (n.newCORSIframeError = function() {
          const e = 'Cross_Origin_Iframe'
          return new n(o[e], e)
        }),
        (n.newSupportError = function(e, t) {
          return new n(`不支持${e}`, `Not_Support_${t}`)
        }),
        (n.newSupportDBError = function() {
          return n.newSupportError('数据库', 'DB')
        }),
        (n.noDBError = function() {
          const e = 'NO_DB'
          return new n(o[e], e)
        }),
        (n.newDBError = function() {
          const e = 'DB'
          return new n(o[e], e)
        }),
        (n.newUnknownError = function() {
          const e = 'Error_Unknown'
          return new n(o[e], e)
        }),
        (n.stillInTeamError = function() {
          const e = 'Still_In_Team'
          return new n(o[e], e)
        }),
        (n.sessionExist = function() {
          const e = 'Session_Exist'
          return new n(o[e], e)
        }),
        (n.sessionNotExist = function() {
          const e = 'Session_Not_Exist'
          return new n(o[e], e)
        }),
        (n.cancel = function() {
          const e = 'Operation_Canceled'
          return new n(o[e], e)
        }),
        (n.customError = function(e, t, i) {
          return (
            (e = e || 'Other_Error'),
            i || (i = o[e] || e),
            (typeof e === 'undefined' ? 'undefined' : r(e)) !== 'object'
              ? new n(i, e, t)
              : typeof t === 'undefined'
                ? new n(i, 'Other_Error', e)
                : new n(i, 'Other_Error', t)
          )
        }),
        (e.exports = n)
    },
    ,
    ,
    ,
    function(e, t) {
      function n() {
        throw new Error('setTimeout has not been defined')
      }
      function r() {
        throw new Error('clearTimeout has not been defined')
      }
      function o(e) {
        if (l === setTimeout) return setTimeout(e, 0)
        if ((l === n || !l) && setTimeout)
          return (l = setTimeout), setTimeout(e, 0)
        try {
          return l(e, 0)
        } catch (t) {
          try {
            return l.call(null, e, 0)
          } catch (t) {
            return l.call(this, e, 0)
          }
        }
      }
      function i(e) {
        if (p === clearTimeout) return clearTimeout(e)
        if ((p === r || !p) && clearTimeout)
          return (p = clearTimeout), clearTimeout(e)
        try {
          return p(e)
        } catch (t) {
          try {
            return p.call(null, e)
          } catch (t) {
            return p.call(this, e)
          }
        }
      }
      function a() {
        h &&
          d &&
          ((h = !1), d.length ? (m = d.concat(m)) : (y = -1), m.length && s())
      }
      function s() {
        if (!h) {
          const e = o(a)
          h = !0
          for (let t = m.length; t; ) {
            for (d = m, m = []; ++y < t; ) d && d[y].run()
            ;(y = -1), (t = m.length)
          }
          ;(d = null), (h = !1), i(e)
        }
      }
      function c(e, t) {
        ;(this.fun = e), (this.array = t)
      }
      function u() {}
      let l,
        p,
        f = (e.exports = {})
      !(function() {
        try {
          l = typeof setTimeout === 'function' ? setTimeout : n
        } catch (e) {
          l = n
        }
        try {
          p = typeof clearTimeout === 'function' ? clearTimeout : r
        } catch (e) {
          p = r
        }
      })()
      var d,
        m = [],
        h = !1,
        y = -1
      ;(f.nextTick = function(e) {
        const t = new Array(arguments.length - 1)
        if (arguments.length > 1)
          for (let n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]
        m.push(new c(e, t)), m.length !== 1 || h || o(s)
      }),
        (c.prototype.run = function() {
          this.fun.apply(null, this.array)
        }),
        (f.title = 'browser'),
        (f.browser = !0),
        (f.env = {}),
        (f.argv = []),
        (f.version = ''),
        (f.versions = {}),
        (f.on = u),
        (f.addListener = u),
        (f.once = u),
        (f.off = u),
        (f.removeListener = u),
        (f.removeAllListeners = u),
        (f.emit = u),
        (f.prependListener = u),
        (f.prependOnceListener = u),
        (f.listeners = function(e) {
          return []
        }),
        (f.binding = function(e) {
          throw new Error('process.binding is not supported')
        }),
        (f.cwd = function() {
          return '/'
        }),
        (f.chdir = function(e) {
          throw new Error('process.chdir is not supported')
        }),
        (f.umask = function() {
          return 0
        })
    },
    function(e, t) {
      ;(function(e) {
        function n() {
          return typeof window !== 'undefined'
            ? window
            : typeof self !== 'undefined'
              ? self
              : typeof e !== 'undefined' ? e : {}
        }
        function r(e) {
          let t = !1,
            n = 'Webkit Moz ms O'.split(' '),
            r = document.createElement('div'),
            o = null
          if (
            ((e = e.toLowerCase()), void 0 !== r.style[e] && (t = !0), t === !1)
          ) {
            o = e.charAt(0).toUpperCase() + e.substr(1)
            for (let i = 0; i < n.length; i++)
              if (void 0 !== r.style[n[i] + o]) {
                t = !0
                break
              }
          }
          return t
        }
        function o(e, t) {
          t = t || 2
          for (var n = `${e}`; n.length < t; ) n = `0${n}`
          return n
        }
        function i(e) {
          return `${e.getFullYear()}`
        }
        function a(e) {
          return o(e.getMonth() + 1)
        }
        function s(e) {
          return o(e.getDate())
        }
        function c(e) {
          return o(e.getHours())
        }
        function u(e) {
          return o(e.getMinutes())
        }
        function l(e) {
          return o(e.getSeconds())
        }
        function p(e) {
          return o(e.getMilliseconds(), 3)
        }
        function f(e) {
          return (e = `${e}`), new Date(e.replace(/-/g, '/').replace('T', ' '))
        }
        function d(e) {
          return Object.prototype.toString.call(e).slice(8, -1)
        }
        function m(e) {
          return d(e).toLowerCase()
        }
        function h(e) {
          return m(e) === 'string'
        }
        function y(e) {
          return m(e) === 'number'
        }
        function g(e) {
          return m(e) === 'boolean'
        }
        function v(e) {
          return m(e) === 'array'
        }
        function b(e) {
          return m(e) === 'function'
        }
        function w(e) {
          return m(e) === 'date'
        }
        function k(e) {
          return m(e) === 'regexp'
        }
        function T(e) {
          return m(e) === 'error'
        }
        function S(e) {
          return e === null
        }
        function M(e) {
          return e !== null
        }
        function _(e) {
          return typeof e === 'undefined'
        }
        function x(e) {
          return typeof e !== 'undefined'
        }
        function C(e) {
          return x(e) && M(e)
        }
        function O(e) {
          return _(e) || S(e)
        }
        function E(e) {
          return C(e) && m(e) === 'object'
        }
        function P(e) {
          return O(e) || ((h(e) || v(e)) && e.length === 0)
        }
        function A(e, t) {
          if (e === t) return !0
          for (; t.parentNode; ) {
            if (t.parentNode === e) return !0
            t = t.parentNode
          }
          return !1
        }
        function I(e) {
          const t = e.parentNode || document.body
          ;(e = e.cloneNode(!0)),
            (e.style.display = 'block'),
            (e.style.opacity = 0),
            (e.style.height = 'auto'),
            t.appendChild(e)
          const n = e.offsetHeight
          return t.removeChild(e), n
        }
        function j(e) {
          e.parentNode && e.parentNode.removeChild(e)
        }
        function N(e, t, n) {
          return C(n)
            ? void e.setAttribute(`data-${t}`, n)
            : e.getAttribute(`data-${t}`)
        }
        function D(e) {
          return e.target || e.srcElement
        }
        function F(e) {
          function t(r) {
            n.src && (e.multi || ie(n, 'load', t), e.onload(r))
          }
          e = e || {}
          let n
          if (e.name)
            try {
              ;(n = document.createElement(
                `<iframe name="${e.name}"></iframe>`
              )),
                (n.frameBorder = 0)
            } catch (r) {
              ;(n = document.createElement('iframe')), (n.name = e.name)
            }
          else n = document.createElement('iframe')
          e.visible || (n.style.display = 'none'),
            b(e.onload) && re(n, 'load', t)
          const o = e.parent
          ;(o || document.body).appendChild(n)
          const i = e.src || 'about:blank'
          return (
            setTimeout(() => {
              n.src = i
            }, 0),
            n
          )
        }
        function R(e) {
          const t = document.createElement('div')
          t.innerHTML = e
          let n = [],
            r = void 0,
            o = void 0
          if (t.children)
            for (r = 0, o = t.children.length; r < o; r++) n.push(t.children[r])
          else
            for (r = 0, o = t.childNodes.length; r < o; r++) {
              const i = t.childNodes[r]
              i.nodeType === 1 && n.push(i)
            }
          return n.length > 1 ? t : n[0]
        }
        function L(e) {
          return (
            C(e) &&
              (document.documentElement.scrollTop = document.body.scrollTop = e),
            window.pageYOffset ||
              document.documentElement.scrollTop ||
              document.body.scrollTop ||
              0
          )
        }
        function U(e) {
          let t = n(),
            r = void 0
          r =
            e.split(',')[0].indexOf('base64') >= 0
              ? t.atob(e.split(',')[1])
              : t.decodeURIComponent(e.split(',')[1])
          for (
            var o = e
                .split(',')[0]
                .split(':')[1]
                .split(';')[0],
              i = new Uint8Array(r.length),
              a = 0;
            a < r.length;
            a++
          )
            i[a] = r.charCodeAt(a)
          return new t.Blob([i], { type: o })
        }
        function B(e, t) {
          let n =
              arguments.length > 2 && void 0 !== arguments[2]
                ? arguments[2]
                : 'image/jpeg',
            r =
              arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1
          if (e.toBlob) e.toBlob(t, n, r)
          else {
            const o = e.toDataURL(n, r)
            t(U(o))
          }
        }
        function q() {
          let e =
              arguments.length > 0 && void 0 !== arguments[0]
                ? arguments[0]
                : {},
            t =
              arguments.length > 1 && void 0 !== arguments[1]
                ? arguments[1]
                : function() {},
            n = arguments[2]
          for (const r in e) e.hasOwnProperty(r) && t.call(n, r, e[r])
        }
        function W(e, t) {
          q(t, (t, n) => {
            e[t] = n
          })
        }
        function H(e) {
          return (
            h(e) && e.indexOf('{') === 0 && e.lastIndexOf('}') === e.length - 1
          )
        }
        function $(e) {
          try {
            H(e) && (e = JSON.parse(e)),
              E(e) &&
                q(e, (t, n) => {
                  switch (m(n)) {
                    case 'string':
                    case 'object':
                      e[t] = $(n)
                  }
                })
          } catch (t) {
            console.error(t)
          }
          return e
        }
        function X(e) {
          return JSON.parse(JSON.stringify(e))
        }
        function J() {
          for (
            var e =
                arguments.length > 0 && void 0 !== arguments[0]
                  ? arguments[0]
                  : {},
              t = arguments.length,
              n = Array(t > 1 ? t - 1 : 0),
              r = 1;
            r < t;
            r++
          )
            n[r - 1] = arguments[r]
          return (
            n.forEach(t => {
              W(e, t)
            }),
            e
          )
        }
        function z(e, t) {
          return (
            q(t, (t, n) => {
              _(e[t]) && (e[t] = n)
            }),
            e
          )
        }
        function K(e, t, n) {
          let r = e[t] || e[t.toLowerCase()]
          return O(r) && ((r = n), (e[t] = r)), r
        }
        function G(e, t) {
          return (
            q(e, (n, r) => {
              C(t[n]) && (e[n] = t[n])
            }),
            e
          )
        }
        function V() {
          let e =
              arguments.length > 0 && void 0 !== arguments[0]
                ? arguments[0]
                : '',
            t =
              arguments.length > 1 && void 0 !== arguments[1]
                ? arguments[1]
                : ',',
            n = {}
          return (
            e.split(t).forEach(e => {
              let t = e.split('='),
                r = t.shift()
              r && (n[decodeURIComponent(r)] = decodeURIComponent(t.join('=')))
            }),
            n
          )
        }
        function Y(e, t, n) {
          if (!e) return ''
          const r = []
          return (
            q(e, (e, t) => {
              b(t) ||
                (w(t)
                  ? (t = t.getTime())
                  : v(t) ? (t = t.join(',')) : E(t) && (t = JSON.stringify(t)),
                n && (t = encodeURIComponent(t)),
                r.push(`${encodeURIComponent(e)}=${t}`))
            }),
            r.join(t || ',')
          )
        }
        function Z(e) {
          return e.indexOf('?') < 0 ? '?' : '&'
        }
        function Q(e) {
          return Y(e, '&', !0)
        }
        function ee(e) {
          const t = n()
          return (
            (e.tagName && e.tagName.toUpperCase() === 'INPUT') ||
            (t.Blob && e instanceof t.Blob)
          )
        }
        function te(e, t) {
          const n = Object.keys(e)
          return (
            t &&
              n.sort((t, n) => {
                let r = ee(e[t]),
                  o = ee(e[n])
                return r === o ? 0 : r ? 1 : -1
              }),
            n
          )
        }
        ;(t.__esModule = !0),
          (t.getGlobal = n),
          (t.detectCSSFeature = r),
          (t.fix = o),
          (t.getYearStr = i),
          (t.getMonthStr = a),
          (t.getDayStr = s),
          (t.getHourStr = c),
          (t.getMinuteStr = u),
          (t.getSecondStr = l),
          (t.getMillisecondStr = p),
          (t.dateFromDateTimeLocal = f),
          (t.getClass = d),
          (t.typeOf = m),
          (t.isString = h),
          (t.isNumber = y),
          (t.isBoolean = g),
          (t.isArray = v),
          (t.isFunction = b),
          (t.isDate = w),
          (t.isRegExp = k),
          (t.isError = T),
          (t.isnull = S),
          (t.notnull = M),
          (t.undef = _),
          (t.notundef = x),
          (t.exist = C),
          (t.notexist = O),
          (t.isObject = E),
          (t.isEmpty = P),
          (t.containsNode = A),
          (t.calcHeight = I),
          (t.remove = j),
          (t.dataset = N),
          (t.target = D),
          (t.createIframe = F),
          (t.html2node = R),
          (t.scrollTop = L),
          (t.blobFromDataURL = U),
          (t.blobFromCanvas = B),
          (t.forOwn = q),
          (t.mixin = W),
          (t.isJSON = H),
          (t.parseJSON = $),
          (t.simpleClone = X),
          (t.merge = J),
          (t.fillUndef = z),
          (t.checkWithDefault = K),
          (t.fetch = G),
          (t.string2object = V),
          (t.object2string = Y),
          (t.genUrlSep = Z),
          (t.object2query = Q),
          (t.isFileInput = ee),
          (t.getKeys = te)
        var ne = ((t.o = {}),
          (t.emptyObj = {}),
          (t.f = function() {}),
          (t.emptyFunc = function() {}),
          (t.regBlank = /\s+/gi),
          (t.regWhiteSpace = /\s+/gi),
          (t.format = (function() {
            let e = /yyyy|MM|dd|hh|mm|ss|SSS/g,
              t = { yyyy: i, MM: a, dd: s, hh: c, mm: u, ss: l, SSS: p }
            return function(n, r) {
              return (
                (n = new Date(n)),
                isNaN(+n)
                  ? 'invalid date'
                  : ((r = r || 'yyyy-MM-dd'),
                    r.replace(e, e => {
                      return t[e](n)
                    }))
              )
            }
          })()),
          (t.addEventListener = function(e, t, n) {
            e.addEventListener
              ? e.addEventListener(t, n, !1)
              : e.attachEvent && e.attachEvent(`on${t}`, n)
          })),
          re = (t.on = ne),
          oe = (t.removeEventListener = function(e, t, n) {
            e.removeEventListener
              ? e.removeEventListener(t, n, !1)
              : e.detachEvent && e.detachEvent(`on${t}`, n)
          }),
          ie = (t.off = oe)
        ;(t.uniqueID = (function() {
          let e = 0
          return function() {
            return `${e++}`
          }
        })()),
          (t.url2origin = (function() {
            const e = /^([\w]+?:\/\/.*?(?=\/|$))/i
            return function(t) {
              return e.test(t || '') ? RegExp.$1.toLowerCase() : ''
            }
          })())
      }.call(
        t,
        (function() {
          return this
        })()
      ))
    },
    ,
    function(e, t, n) {
      let r
      ;(function(e, o) {
        ;(function() {
          function i(e) {
            return (e = String(e)), e.charAt(0).toUpperCase() + e.slice(1)
          }
          function a(e, t, n) {
            let r = {
              '10.0': '10',
              6.4: '10 Technical Preview',
              6.3: '8.1',
              6.2: '8',
              6.1: 'Server 2008 R2 / 7',
              '6.0': 'Server 2008 / Vista',
              5.2: 'Server 2003 / XP 64-bit',
              5.1: 'XP',
              5.01: '2000 SP1',
              '5.0': '2000',
              '4.0': 'NT',
              '4.90': 'ME',
            }
            return (
              t &&
                n &&
                /^Win/i.test(e) &&
                !/^Windows Phone /i.test(e) &&
                (r = r[/[\d.]+$/.exec(e)]) &&
                (e = `Windows ${r}`),
              (e = String(e)),
              t && n && (e = e.replace(RegExp(t, 'i'), n)),
              (e = c(
                e
                  .replace(/ ce$/i, ' CE')
                  .replace(/\bhpw/i, 'web')
                  .replace(/\bMacintosh\b/, 'Mac OS')
                  .replace(/_PowerPC\b/i, ' OS')
                  .replace(/\b(OS X) [^ \d]+/i, '$1')
                  .replace(/\bMac (OS X)\b/, '$1')
                  .replace(/\/(\d)/, ' $1')
                  .replace(/_/g, '.')
                  .replace(/(?: BePC|[ .]*fc[ \d.]+)$/i, '')
                  .replace(/\bx86\.64\b/gi, 'x86_64')
                  .replace(/\b(Windows Phone) OS\b/, '$1')
                  .replace(/\b(Chrome OS \w+) [\d.]+\b/, '$1')
                  .split(' on ')[0]
              ))
            )
          }
          function s(e, t) {
            let n = -1,
              r = e ? e.length : 0
            if (typeof r === 'number' && r > -1 && r <= T)
              for (; ++n < r; ) t(e[n], n, e)
            else u(e, t)
          }
          function c(e) {
            return (e = m(e)), /^(?:webOS|i(?:OS|P))/.test(e) ? e : i(e)
          }
          function u(e, t) {
            for (const n in e) x.call(e, n) && t(e[n], n, e)
          }
          function l(e) {
            return e == null ? i(e) : C.call(e).slice(8, -1)
          }
          function p(e, t) {
            const n = e != null ? typeof e[t] : 'number'
            return !(
              /^(?:boolean|number|string|undefined)$/.test(n) ||
              (n == 'object' && !e[t])
            )
          }
          function f(e) {
            return String(e).replace(/([ -])(?!$)/g, '$1?')
          }
          function d(e, t) {
            let n = null
            return (
              s(e, (r, o) => {
                n = t(n, r, o, e)
              }),
              n
            )
          }
          function m(e) {
            return String(e).replace(/^ +| +$/g, '')
          }
          function h(e) {
            function t(t) {
              return d(t, (t, n) => {
                return (
                  t ||
                  (RegExp(`\\b${n.pattern || f(n)}\\b`, 'i').exec(e) &&
                    (n.label || n))
                )
              })
            }
            function n(t) {
              return d(t, (t, n, r) => {
                return (
                  t ||
                  ((n[G] ||
                    n[/^[a-z]+(?: +[a-z]+\b)*/i.exec(G)] ||
                    RegExp(`\\b${f(r)}(?:\\b|\\w*\\d)`, 'i').exec(e)) &&
                    r)
                )
              })
            }
            function r(t) {
              return d(t, (t, n) => {
                return (
                  t ||
                  (RegExp(`\\b${n.pattern || f(n)}\\b`, 'i').exec(e) &&
                    (n.label || n))
                )
              })
            }
            function o(t) {
              return d(t, (t, n) => {
                const r = n.pattern || f(n)
                return (
                  !t &&
                    (t = RegExp(`\\b${r}(?:/[\\d.]+|[ \\w.]*)`, 'i').exec(e)) &&
                    (t = a(t, r, n.label || n)),
                  t
                )
              })
            }
            function i(t) {
              return d(t, (t, n) => {
                const r = n.pattern || f(n)
                return (
                  !t &&
                    (t =
                      RegExp(`\\b${r} *\\d+[.\\w_]*`, 'i').exec(e) ||
                      RegExp(`\\b${r} *\\w+-[\\w]*`, 'i').exec(e) ||
                      RegExp(
                        `\\b${r}(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)`,
                        'i'
                      ).exec(e)) &&
                    ((t = String(
                      n.label && !RegExp(r, 'i').test(n.label) ? n.label : t
                    ).split('/'))[1] &&
                      !/[\d.]+/.test(t[0]) &&
                      (t[0] += ` ${t[1]}`),
                    (n = n.label || n),
                    (t = c(
                      t[0]
                        .replace(RegExp(r, 'i'), n)
                        .replace(RegExp(`; *(?:${n}[_-])?`, 'i'), ' ')
                        .replace(RegExp(`(${n})[-_.]?(\\w)`, 'i'), '$1 $2')
                    ))),
                  t
                )
              })
            }
            function s(t) {
              return d(t, (t, n) => {
                return (
                  t ||
                  (RegExp(
                    `${n}(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)`,
                    'i'
                  ).exec(e) || 0)[1] ||
                  null
                )
              })
            }
            function y() {
              return this.description || ''
            }
            let b = g,
              w = e && typeof e === 'object' && l(e) != 'String'
            w && ((b = e), (e = null))
            let k = b.navigator || {},
              T = k.userAgent || ''
            e || (e = T)
            var _,
              x,
              O = w || M == v,
              E = w
                ? !!k.likeChrome
                : /\bChrome\b/.test(e) && !/internal|\n/i.test(C.toString()),
              P = 'Object',
              A = w ? P : 'ScriptBridgingProxyObject',
              I = w ? P : 'Environment',
              j = w && b.java ? 'JavaPackage' : l(b.java),
              N = w ? P : 'RuntimeObject',
              D = /\bJava/.test(j) && b.java,
              F = D && l(b.environment) == I,
              R = D ? 'a' : 'α',
              L = D ? 'b' : 'β',
              U = b.document || {},
              B = b.operamini || b.opera,
              q = S.test((q = w && B ? B['[[Class]]'] : l(B))) ? q : (B = null),
              W = e,
              H = [],
              $ = null,
              X = e == T,
              J = X && B && typeof B.version === 'function' && B.version(),
              z = t([
                { label: 'EdgeHTML', pattern: 'Edge' },
                'Trident',
                { label: 'WebKit', pattern: 'AppleWebKit' },
                'iCab',
                'Presto',
                'NetFront',
                'Tasman',
                'KHTML',
                'Gecko',
              ]),
              K = r([
                'Adobe AIR',
                'Arora',
                'Avant Browser',
                'Breach',
                'Camino',
                'Electron',
                'Epiphany',
                'Fennec',
                'Flock',
                'Galeon',
                'GreenBrowser',
                'iCab',
                'Iceweasel',
                'K-Meleon',
                'Konqueror',
                'Lunascape',
                'Maxthon',
                { label: 'Microsoft Edge', pattern: 'Edge' },
                'Midori',
                'Nook Browser',
                'PaleMoon',
                'PhantomJS',
                'Raven',
                'Rekonq',
                'RockMelt',
                { label: 'Samsung Internet', pattern: 'SamsungBrowser' },
                'SeaMonkey',
                { label: 'Silk', pattern: '(?:Cloud9|Silk-Accelerated)' },
                'Sleipnir',
                'SlimBrowser',
                { label: 'SRWare Iron', pattern: 'Iron' },
                'Sunrise',
                'Swiftfox',
                'Waterfox',
                'WebPositive',
                'Opera Mini',
                { label: 'Opera Mini', pattern: 'OPiOS' },
                'Opera',
                { label: 'Opera', pattern: 'OPR' },
                'Chrome',
                { label: 'Chrome Mobile', pattern: '(?:CriOS|CrMo)' },
                { label: 'Firefox', pattern: '(?:Firefox|Minefield)' },
                { label: 'Firefox for iOS', pattern: 'FxiOS' },
                { label: 'IE', pattern: 'IEMobile' },
                { label: 'IE', pattern: 'MSIE' },
                'Safari',
              ]),
              G = i([
                { label: 'BlackBerry', pattern: 'BB10' },
                'BlackBerry',
                { label: 'Galaxy S', pattern: 'GT-I9000' },
                { label: 'Galaxy S2', pattern: 'GT-I9100' },
                { label: 'Galaxy S3', pattern: 'GT-I9300' },
                { label: 'Galaxy S4', pattern: 'GT-I9500' },
                { label: 'Galaxy S5', pattern: 'SM-G900' },
                { label: 'Galaxy S6', pattern: 'SM-G920' },
                { label: 'Galaxy S6 Edge', pattern: 'SM-G925' },
                { label: 'Galaxy S7', pattern: 'SM-G930' },
                { label: 'Galaxy S7 Edge', pattern: 'SM-G935' },
                'Google TV',
                'Lumia',
                'iPad',
                'iPod',
                'iPhone',
                'Kindle',
                {
                  label: 'Kindle Fire',
                  pattern: '(?:Cloud9|Silk-Accelerated)',
                },
                'Nexus',
                'Nook',
                'PlayBook',
                'PlayStation Vita',
                'PlayStation',
                'TouchPad',
                'Transformer',
                { label: 'Wii U', pattern: 'WiiU' },
                'Wii',
                'Xbox One',
                { label: 'Xbox 360', pattern: 'Xbox' },
                'Xoom',
              ]),
              V = n({
                Apple: { iPad: 1, iPhone: 1, iPod: 1 },
                Archos: {},
                Amazon: { Kindle: 1, 'Kindle Fire': 1 },
                Asus: { Transformer: 1 },
                'Barnes & Noble': { Nook: 1 },
                BlackBerry: { PlayBook: 1 },
                Google: { 'Google TV': 1, Nexus: 1 },
                HP: { TouchPad: 1 },
                HTC: {},
                LG: {},
                Microsoft: { Xbox: 1, 'Xbox One': 1 },
                Motorola: { Xoom: 1 },
                Nintendo: { 'Wii U': 1, Wii: 1 },
                Nokia: { Lumia: 1 },
                Samsung: {
                  'Galaxy S': 1,
                  'Galaxy S2': 1,
                  'Galaxy S3': 1,
                  'Galaxy S4': 1,
                },
                Sony: { PlayStation: 1, 'PlayStation Vita': 1 },
              }),
              Y = o([
                'Windows Phone',
                'Android',
                'CentOS',
                { label: 'Chrome OS', pattern: 'CrOS' },
                'Debian',
                'Fedora',
                'FreeBSD',
                'Gentoo',
                'Haiku',
                'Kubuntu',
                'Linux Mint',
                'OpenBSD',
                'Red Hat',
                'SuSE',
                'Ubuntu',
                'Xubuntu',
                'Cygwin',
                'Symbian OS',
                'hpwOS',
                'webOS ',
                'webOS',
                'Tablet OS',
                'Tizen',
                'Linux',
                'Mac OS X',
                'Macintosh',
                'Mac',
                'Windows 98;',
                'Windows ',
              ])
            if (
              (z && (z = [z]),
              V && !G && (G = i([V])),
              (_ = /\bGoogle TV\b/.exec(G)) && (G = _[0]),
              /\bSimulator\b/i.test(e) && (G = `${G ? `${G} ` : ''}Simulator`),
              K == 'Opera Mini' &&
                /\bOPiOS\b/.test(e) &&
                H.push('running in Turbo/Uncompressed mode'),
              K == 'IE' && /\blike iPhone OS\b/.test(e)
                ? ((_ = h(e.replace(/like iPhone OS/, ''))),
                  (V = _.manufacturer),
                  (G = _.product))
                : /^iP/.test(G)
                  ? (K || (K = 'Safari'),
                    (Y = `iOS${
                      (_ = / OS ([\d_]+)/i.exec(e))
                        ? ` ${_[1].replace(/_/g, '.')}`
                        : ''
                    }`))
                  : K != 'Konqueror' || /buntu/i.test(Y)
                    ? (V &&
                        V != 'Google' &&
                        ((/Chrome/.test(K) && !/\bMobile Safari\b/i.test(e)) ||
                          /\bVita\b/.test(G))) ||
                      (/\bAndroid\b/.test(Y) &&
                        /^Chrome/.test(K) &&
                        /\bVersion\//i.test(e))
                      ? ((K = 'Android Browser'),
                        (Y = /\bAndroid\b/.test(Y) ? Y : 'Android'))
                      : K == 'Silk'
                        ? (/\bMobi/i.test(e) ||
                            ((Y = 'Android'), H.unshift('desktop mode')),
                          /Accelerated *= *true/i.test(e) &&
                            H.unshift('accelerated'))
                        : K == 'PaleMoon' &&
                          (_ = /\bFirefox\/([\d.]+)\b/.exec(e))
                          ? H.push(`identifying as Firefox ${_[1]}`)
                          : K == 'Firefox' &&
                            (_ = /\b(Mobile|Tablet|TV)\b/i.exec(e))
                            ? (Y || (Y = 'Firefox OS'), G || (G = _[1]))
                            : !K ||
                              (_ =
                                !/\bMinefield\b/i.test(e) &&
                                /\b(?:Firefox|Safari)\b/.exec(K))
                              ? (K &&
                                  !G &&
                                  /[\/,]|^[^(]+?\)/.test(
                                    e.slice(e.indexOf(`${_}/`) + 8)
                                  ) &&
                                  (K = null),
                                (_ = G || V || Y) &&
                                  (G ||
                                    V ||
                                    /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(
                                      Y
                                    )) &&
                                  (K = `${/[a-z]+(?: Hat)?/i.exec(
                                    /\bAndroid\b/.test(Y) ? Y : _
                                  )} Browser`))
                              : K == 'Electron' &&
                                (_ = (/\bChrome\/([\d.]+)\b/.exec(e) ||
                                  0)[1]) &&
                                H.push(`Chromium ${_}`)
                    : (Y = 'Kubuntu'),
              J ||
                (J = s([
                  '(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$))',
                  'Version',
                  f(K),
                  '(?:Firefox|Minefield|NetFront)',
                ])),
              (_ =
                (z == 'iCab' && parseFloat(J) > 3 && 'WebKit') ||
                (/\bOpera\b/.test(K) &&
                  (/\bOPR\b/.test(e) ? 'Blink' : 'Presto')) ||
                (/\b(?:Midori|Nook|Safari)\b/i.test(e) &&
                  !/^(?:Trident|EdgeHTML)$/.test(z) &&
                  'WebKit') ||
                (!z &&
                  /\bMSIE\b/i.test(e) &&
                  (Y == 'Mac OS' ? 'Tasman' : 'Trident')) ||
                (z == 'WebKit' &&
                  /\bPlayStation\b(?! Vita\b)/i.test(K) &&
                  'NetFront')) && (z = [_]),
              K == 'IE' && (_ = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(e) || 0)[1])
                ? ((K += ' Mobile'),
                  (Y = `Windows Phone ${/\+$/.test(_) ? _ : `${_}.x`}`),
                  H.unshift('desktop mode'))
                : /\bWPDesktop\b/i.test(e)
                  ? ((K = 'IE Mobile'),
                    (Y = 'Windows Phone 8.x'),
                    H.unshift('desktop mode'),
                    J || (J = (/\brv:([\d.]+)/.exec(e) || 0)[1]))
                  : K != 'IE' &&
                    z == 'Trident' &&
                    (_ = /\brv:([\d.]+)/.exec(e)) &&
                    (K && H.push(`identifying as ${K}${J ? ` ${J}` : ''}`),
                    (K = 'IE'),
                    (J = _[1])),
              X)
            ) {
              if (p(b, 'global'))
                if (
                  (D &&
                    ((_ = D.lang.System),
                    (W = _.getProperty('os.arch')),
                    (Y =
                      Y ||
                      `${_.getProperty('os.name')} ${_.getProperty(
                        'os.version'
                      )}`)),
                  O && p(b, 'system') && (_ = [b.system])[0])
                ) {
                  Y || (Y = _[0].os || null)
                  try {
                    ;(_[1] = b.require('ringo/engine').version),
                      (J = _[1].join('.')),
                      (K = 'RingoJS')
                  } catch (Z) {
                    _[0].global.system == b.system && (K = 'Narwhal')
                  }
                } else
                  typeof b.process === 'object' &&
                  !b.process.browser &&
                  (_ = b.process)
                    ? typeof _.versions === 'object'
                      ? typeof _.versions.electron === 'string'
                        ? (H.push(`Node ${_.versions.node}`),
                          (K = 'Electron'),
                          (J = _.versions.electron))
                        : typeof _.versions.nw === 'string' &&
                          (H.push(`Chromium ${J}`, `Node ${_.versions.node}`),
                          (K = 'NW.js'),
                          (J = _.versions.nw))
                      : ((K = 'Node.js'),
                        (W = _.arch),
                        (Y = _.platform),
                        (J = /[\d.]+/.exec(_.version)),
                        (J = J ? J[0] : 'unknown'))
                    : F && (K = 'Rhino')
              else
                l((_ = b.runtime)) == A
                  ? ((K = 'Adobe AIR'), (Y = _.flash.system.Capabilities.os))
                  : l((_ = b.phantom)) == N
                    ? ((K = 'PhantomJS'),
                      (J =
                        (_ = _.version || null) &&
                        `${_.major}.${_.minor}.${_.patch}`))
                    : typeof U.documentMode === 'number' &&
                      (_ = /\bTrident\/(\d+)/i.exec(e))
                      ? ((J = [J, U.documentMode]),
                        (_ = +_[1] + 4) != J[1] &&
                          (H.push(`IE ${J[1]} mode`),
                          z && (z[1] = ''),
                          (J[1] = _)),
                        (J = K == 'IE' ? String(J[1].toFixed(1)) : J[0]))
                      : typeof U.documentMode === 'number' &&
                        /^(?:Chrome|Firefox)\b/.test(K) &&
                        (H.push(`masking as ${K} ${J}`),
                        (K = 'IE'),
                        (J = '11.0'),
                        (z = ['Trident']),
                        (Y = 'Windows'))
              Y = Y && c(Y)
            }
            if (
              (J &&
                (_ =
                  /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(J) ||
                  /(?:alpha|beta)(?: ?\d)?/i.exec(
                    `${e};${X && k.appMinorVersion}`
                  ) ||
                  (/\bMinefield\b/i.test(e) && 'a')) &&
                (($ = /b/i.test(_) ? 'beta' : 'alpha'),
                (J =
                  J.replace(RegExp(`${_}\\+?$`), '') +
                  ($ == 'beta' ? L : R) +
                  (/\d+\+?/.exec(_) || ''))),
              K == 'Fennec' ||
                (K == 'Firefox' && /\b(?:Android|Firefox OS)\b/.test(Y)))
            )
              K = 'Firefox Mobile'
            else if (K == 'Maxthon' && J) J = J.replace(/\.[\d.]+/, '.x')
            else if (/\bXbox\b/i.test(G))
              G == 'Xbox 360' && (Y = null),
                G == 'Xbox 360' &&
                  /\bIEMobile\b/.test(e) &&
                  H.unshift('mobile mode')
            else if (
              (!/^(?:Chrome|IE|Opera)$/.test(K) &&
                (!K || G || /Browser|Mobi/.test(K))) ||
              (Y != 'Windows CE' && !/Mobi/i.test(e))
            )
              if (K == 'IE' && X)
                try {
                  b.external === null && H.unshift('platform preview')
                } catch (Z) {
                  H.unshift('embedded')
                }
              else
                (/\bBlackBerry\b/.test(G) || /\bBB10\b/.test(e)) &&
                (_ =
                  (RegExp(`${G.replace(/ +/g, ' *')}/([.\\d]+)`, 'i').exec(e) ||
                    0)[1] || J)
                  ? ((_ = [_, /BB10/.test(e)]),
                    (Y = `${
                      _[1]
                        ? ((G = null), (V = 'BlackBerry'))
                        : 'Device Software'
                    } ${_[0]}`),
                    (J = null))
                  : this != u &&
                    G != 'Wii' &&
                    ((X && B) ||
                      (/Opera/.test(K) && /\b(?:MSIE|Firefox)\b/i.test(e)) ||
                      (K == 'Firefox' && /\bOS X (?:\d+\.){2,}/.test(Y)) ||
                      (K == 'IE' &&
                        ((Y && !/^Win/.test(Y) && J > 5.5) ||
                          (/\bWindows XP\b/.test(Y) && J > 8) ||
                          (J == 8 && !/\bTrident\b/.test(e))))) &&
                    !S.test((_ = h.call(u, `${e.replace(S, '')};`))) &&
                    _.name &&
                    ((_ = `ing as ${_.name}${(_ = _.version) ? ` ${_}` : ''}`),
                    S.test(K)
                      ? (/\bIE\b/.test(_) && Y == 'Mac OS' && (Y = null),
                        (_ = `identify${_}`))
                      : ((_ = `mask${_}`),
                        (K = q
                          ? c(q.replace(/([a-z])([A-Z])/g, '$1 $2'))
                          : 'Opera'),
                        /\bIE\b/.test(_) && (Y = null),
                        X || (J = null)),
                    (z = ['Presto']),
                    H.push(_))
            else K += ' Mobile'
            ;(_ = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(e) || 0)[1]) &&
              ((_ = [parseFloat(_.replace(/\.(\d)$/, '.0$1')), _]),
              K == 'Safari' && _[1].slice(-1) == '+'
                ? ((K = 'WebKit Nightly'),
                  ($ = 'alpha'),
                  (J = _[1].slice(0, -1)))
                : (J != _[1] &&
                    J != (_[2] = (/\bSafari\/([\d.]+\+?)/i.exec(e) || 0)[1])) ||
                  (J = null),
              (_[1] = (/\bChrome\/([\d.]+)/i.exec(e) || 0)[1]),
              _[0] == 537.36 &&
                _[2] == 537.36 &&
                parseFloat(_[1]) >= 28 &&
                z == 'WebKit' &&
                (z = ['Blink']),
              X && (E || _[1])
                ? (z && (z[1] = 'like Chrome'),
                  (_ =
                    _[1] ||
                    ((_ = _[0]),
                    _ < 530
                      ? 1
                      : _ < 532
                        ? 2
                        : _ < 532.05
                          ? 3
                          : _ < 533
                            ? 4
                            : _ < 534.03
                              ? 5
                              : _ < 534.07
                                ? 6
                                : _ < 534.1
                                  ? 7
                                  : _ < 534.13
                                    ? 8
                                    : _ < 534.16
                                      ? 9
                                      : _ < 534.24
                                        ? 10
                                        : _ < 534.3
                                          ? 11
                                          : _ < 535.01
                                            ? 12
                                            : _ < 535.02
                                              ? '13+'
                                              : _ < 535.07
                                                ? 15
                                                : _ < 535.11
                                                  ? 16
                                                  : _ < 535.19
                                                    ? 17
                                                    : _ < 536.05
                                                      ? 18
                                                      : _ < 536.1
                                                        ? 19
                                                        : _ < 537.01
                                                          ? 20
                                                          : _ < 537.11
                                                            ? '21+'
                                                            : _ < 537.13
                                                              ? 23
                                                              : _ < 537.18
                                                                ? 24
                                                                : _ < 537.24
                                                                  ? 25
                                                                  : _ < 537.36
                                                                    ? 26
                                                                    : z !=
                                                                      'Blink'
                                                                      ? '27'
                                                                      : '28')))
                : (z && (z[1] = 'like Safari'),
                  (_ = _[0]),
                  (_ =
                    _ < 400
                      ? 1
                      : _ < 500
                        ? 2
                        : _ < 526
                          ? 3
                          : _ < 533
                            ? 4
                            : _ < 534
                              ? '4+'
                              : _ < 535
                                ? 5
                                : _ < 537
                                  ? 6
                                  : _ < 538 ? 7 : _ < 601 ? 8 : '8')),
              z &&
                (z[1] += ` ${(_ +=
                  typeof _ === 'number' ? '.x' : /[.+]/.test(_) ? '' : '+')}`),
              K == 'Safari' && (!J || parseInt(J) > 45) && (J = _)),
              K == 'Opera' && (_ = /\bzbov|zvav$/.exec(Y))
                ? ((K += ' '),
                  H.unshift('desktop mode'),
                  _ == 'zvav' ? ((K += 'Mini'), (J = null)) : (K += 'Mobile'),
                  (Y = Y.replace(RegExp(` *${_}$`), '')))
                : K == 'Safari' &&
                  /\bChrome\b/.exec(z && z[1]) &&
                  (H.unshift('desktop mode'),
                  (K = 'Chrome Mobile'),
                  (J = null),
                  /\bOS X\b/.test(Y)
                    ? ((V = 'Apple'), (Y = 'iOS 4.3+'))
                    : (Y = null)),
              J &&
                J.indexOf((_ = /[\d.]+$/.exec(Y))) == 0 &&
                e.indexOf(`/${_}-`) > -1 &&
                (Y = m(Y.replace(_, ''))),
              z &&
                !/\b(?:Avant|Nook)\b/.test(K) &&
                (/Browser|Lunascape|Maxthon/.test(K) ||
                  (K != 'Safari' &&
                    /^iOS/.test(Y) &&
                    /\bSafari\b/.test(z[1])) ||
                  (/^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(
                    K
                  ) &&
                    z[1])) &&
                (_ = z[z.length - 1]) &&
                H.push(_),
              H.length && (H = [`(${H.join('; ')})`]),
              V && G && G.indexOf(V) < 0 && H.push(`on ${V}`),
              G && H.push((/^on /.test(H[H.length - 1]) ? '' : 'on ') + G),
              Y &&
                ((_ = / ([\d.+]+)$/.exec(Y)),
                (x = _ && Y.charAt(Y.length - _[0].length - 1) == '/'),
                (Y = {
                  architecture: 32,
                  family: _ && !x ? Y.replace(_[0], '') : Y,
                  version: _ ? _[1] : null,
                  toString() {
                    const e = this.version
                    return (
                      this.family +
                      (e && !x ? ` ${e}` : '') +
                      (this.architecture == 64 ? ' 64-bit' : '')
                    )
                  },
                })),
              (_ = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(W)) &&
              !/\bi686\b/i.test(W)
                ? (Y &&
                    ((Y.architecture = 64),
                    (Y.family = Y.family.replace(RegExp(` *${_}`), ''))),
                  K &&
                    (/\bWOW64\b/i.test(e) ||
                      (X &&
                        /\w(?:86|32)$/.test(k.cpuClass || k.platform) &&
                        !/\bWin64; x64\b/i.test(e))) &&
                    H.unshift('32-bit'))
                : Y &&
                  /^OS X/.test(Y.family) &&
                  K == 'Chrome' &&
                  parseFloat(J) >= 39 &&
                  (Y.architecture = 64),
              e || (e = null)
            const Q = {}
            return (
              (Q.description = e),
              (Q.layout = z && z[0]),
              (Q.manufacturer = V),
              (Q.name = K),
              (Q.prerelease = $),
              (Q.product = G),
              (Q.ua = e),
              (Q.version = K && J),
              (Q.os = Y || {
                architecture: null,
                family: null,
                version: null,
                toString() {
                  return 'null'
                },
              }),
              (Q.parse = h),
              (Q.toString = y),
              Q.version && H.unshift(J),
              Q.name && H.unshift(K),
              Y &&
                K &&
                (Y != String(Y).split(' ')[0] ||
                  (Y != K.split(' ')[0] && !G)) &&
                H.push(G ? `(${Y})` : `on ${Y}`),
              H.length && (Q.description = H.join(' ')),
              Q
            )
          }
          var y = { function: !0, object: !0 },
            g = (y[typeof window] && window) || this,
            v = g,
            b = y[typeof t] && t,
            w = y[typeof e] && e && !e.nodeType && e,
            k = b && w && typeof o === 'object' && o
          !k || (k.global !== k && k.window !== k && k.self !== k) || (g = k)
          var T = Math.pow(2, 53) - 1,
            S = /\bOpera/,
            M = this,
            _ = Object.prototype,
            x = _.hasOwnProperty,
            C = _.toString,
            O = h()
          ;(g.platform = O),
            (r = function() {
              return O
            }.call(t, n, t, e)),
            !(void 0 !== r && (e.exports = r))
        }.call(this))
      }.call(
        t,
        n(16)(e),
        (function() {
          return this
        })()
      ))
    },
    ,
    function(e, t, n) {
      function r() {}
      let o = n(4),
        i = n(2).Promise,
        a = n(1),
        s = a.notundef,
        c = n(96),
        u = n(3),
        l = {}
      ;(r.rmAllInstances = function() {
        l = {}
      }),
        (r.getInstance = function(e) {
          const t = this
          a.verifyOptions(e, 'account')
          let n = t.genInstanceName(e),
            o = l[n]
          return o ? r.updateInstance(o, e) : (o = l[n] = new t(e)), o
        }),
        (r.updateInstance = function(e, t) {
          e.setOptions(t), e.connect()
        })
      const p = (r.fn = r.prototype = Object.create(new o()))
      ;(p.init = function(e) {
        const t = this
        a.verifyOptions(e, 'account')
        let n = (t.account = e.account += ''),
          o = e.constructor,
          i = o.genInstanceName(e),
          s = l[i]
        if ((e._disableSingleton && (s = null), s))
          return r.updateInstance(s, e), s
        ;(t.name = i),
          (l[i] = t),
          (t.logger = e.logger = new c({
            debug: e.debug,
            logFunc: e.logFunc,
            prefix: t.subType,
          })),
          (e.api = t)
        const p = (t.protocol = new e.Protocol(e))
        return (
          (p.name = `Protocol-${i}`),
          (p.account = n),
          (p.api = t),
          (p.message = t.message = new e.Message({
            account: n,
            enabledHttpsForMessage:
              t.protocol.options.enabledHttpsForMessage || !1,
          })),
          (t.options = a.copy(e)),
          (u.ntServerAddress =
            e.ntServerAddress === null
              ? null
              : e.ntServerAddress || 'https://dr.netease.im/1.gif'),
          (u.downloadHost = e.downloadHost || 'nos.netease.com'),
          e.uploadUrl && (u.uploadUrl = e.uploadUrl),
          e.downloadUrl && (u.downloadUrl = e.downloadUrl),
          (u.replaceUrl = e.replaceUrl || 'http://nos.netease.im'),
          t.reset(),
          t
        )
      }),
        (p.reset = function() {
          let e = this,
            t = e.options
          a.verifyBooleanWithDefault(t, 'exifOrientation', !0)
        }),
        (p.setOptions = function(e) {
          this.reset(), this.protocol.setOptions(e)
        }),
        (p.processCallback = function(e, t) {
          f(e, t)
        }),
        (p.processCallbackPromise = function(e, t) {
          const n = new i((n, r) => {
            f(e, t, !0, n, r)
          })
          return n
        })
      var f = function(e, t, n, r, o) {
        a.verifyCallback(e, 'done'),
          (e.callback = function(i, c, u) {
            const l = e.callback.options
            if (((c = c || l), t && (c = l), a.isFunction(e.cbaop))) {
              const p = e.cbaop(i, c)
              s(p) && (c = p)
            }
            const f = e.done
            a.isObject(c) && (delete c.done, delete c.cb, delete c.callback),
              n ? (i ? o(i) : r(c)) : f(i, c, u)
          }),
          (e.callback.options = a.copy(e))
      }
      ;(p.processPs = function(e) {
        a.notexist(e.ps) && (e.ps = '')
      }),
        (p.processCustom = function(e) {
          a.notexist(e.custom) && (e.custom = '')
        }),
        (p.sendCmd = function() {
          this.protocol.sendCmd.apply(this.protocol, arguments)
        }),
        (p.sendCmdWithResp = function(e, t, n) {
          this.sendCmd(e, t, (e, t, r) => {
            a.isFunction(n) && (e ? n(e, t) : n(null, r))
          })
        }),
        (p.cbAndSendCmd = function(e, t) {
          const n = this.processCallbackPromise(t)
          return this.sendCmd(e, t), n
        }),
        (r.use = function(e, t) {
          e && e.install && a.isFunction(e.install) && e.install(this, t)
        }),
        (e.exports = r),
        n(70),
        n(72),
        n(73),
        n(74),
        n(71)
    },
    function(e, t, n) {
      let r = n(1),
        o = {}
      ;(o.init = function() {
        o.deviceId = r.guid()
      }),
        o.init(),
        (o.clientTypeMap = {
          1: 'Android',
          2: 'iOS',
          4: 'PC',
          8: 'WindowsPhone',
          16: 'Web',
          32: 'Server',
          64: 'Mac',
        }),
        (e.exports = o)
    },
    function(e, t) {
      e.exports = function(e) {
        return (
          e.webpackPolyfill ||
            ((e.deprecate = function() {}),
            (e.paths = []),
            (e.children = []),
            (e.webpackPolyfill = 1)),
          e
        )
      }
    },
    function(e, t, n) {
      function r(e) {
        const t = this
        o.undef(e.secure) && (e.secure = !0),
          (t.options = o.copy(e)),
          t.init(),
          t.connect()
      }
      var o = n(1),
        i = n(3),
        a = n(5),
        s = (r.fn = r.prototype)
      ;(s.init = function() {
        const e = this
        ;(e.logger = e.options.logger),
          (e.cmdTaskArray = []),
          (e.timerMap = {}),
          (e.cmdCallbackMap = {}),
          (e.cmdContentMap = {}),
          e.initConnect(),
          e.reset()
      }),
        (s.reset = function() {
          const e = this
          e.resetConnect()
        }),
        (s.setOptions = function(e) {
          let t = this,
            n = t.options,
            r = Object.keys(n),
            i = r.indexOf('account')
          i !== -1 && r.splice(i, 1),
            (e = o.filterObj(e, r)),
            (t.options = o.merge(n, e)),
            t.reset()
        }),
        (s.sendCmd = function(e) {
          let t =
              arguments.length > 1 && void 0 !== arguments[1]
                ? arguments[1]
                : '',
            n = arguments[2],
            r = this
          r.heartbeat(),
            e !== 'heartbeat' && r.logger.warn(`protocol::sendCmd: ${e}`, t)
          const o = e
          e = r.parser.createCmd(e, t)
          let i,
            a = e.SER
          ;(t = t || {}),
            (r.cmdContentMap[a] = t),
            t.single &&
              (delete t.single,
              (i = Object.keys(t)),
              i.length === 1 && (r.cmdContentMap[a] = t[i[0]])),
            t.NOTSTORE &&
              ((i = t.NOTSTORE.split(' ')),
              i.forEach(e => {
                delete t[e]
              }),
              delete t.NOTSTORE),
            (n = n || t.callback),
            n && (r.cmdCallbackMap[a] = n),
            r.cmdTaskArray.push({ cmdName: o, cmd: JSON.stringify(e) }),
            r.startCmdTaskTimer()
        }),
        (s.startCmdTaskTimer = function() {
          const e = this
          e.cmdTaskTimer ||
            (e.cmdTaskTimer = setTimeout(() => {
              const t = e.cmdTaskArray.shift()
              ;(e.cmdTaskTimer = null),
                t && e.executeCmdTask(t),
                e.cmdTaskArray.length && e.startCmdTaskTimer()
            }, 0))
        }),
        (s.executeCmdTask = function(e) {
          let t = this,
            n = e.cmdName,
            r = e.cmd
          r = JSON.parse(r)
          const o = r.SER
          t.isFrequencyControlled(n)
            ? (t.logger.warn(`protocol::executeCmdTask: ${n} hit freq control`),
              t.markCallbackInvalid(o, a.newFrequencyControlError()))
            : t.isConnected()
              ? (t.logger.log(`protocol::sendCmd: ${n} ${JSON.stringify(r)}`),
                t.doSendCmd(r))
              : (t.logger.warn(`protocol::executeCmdTask: ${n} not connected`),
                t.markCallbackInvalid(o, a.newSocketStateError()))
        }),
        (s.isFrequencyControlled = function(e) {
          const t = this.frequencyControlMap && this.frequencyControlMap[e]
          if (t) {
            if (Date.now() < t.from + t.duration) return !0
            delete this.frequencyControlMap[e]
          }
        }),
        (s.doSendCmd = function(e) {
          let t = this,
            n = e.SER
          t.timerMap[n] = setTimeout(() => {
            t.markCallbackInvalid(n, a.newTimeoutError())
          }, i.cmdTimeout)
          try {
            t.socket.send(JSON.stringify(e))
          } catch (r) {
            t.markCallbackInvalid(n, a.newSocketStateError()),
              t.onDisconnect(!0)
          }
        }),
        (s.getObjWithSer = function(e) {
          let t = this,
            n = t.cmdContentMap[e]
          return delete t.cmdContentMap[e], n && o.copy(n)
        }),
        (s.getCallbackWithSer = function(e) {
          let t = this,
            n = t.cmdCallbackMap[e]
          return delete t.cmdCallbackMap[e], n
        }),
        (s.getTimerWithSer = function(e) {
          let t = this,
            n = t.timerMap[e]
          return delete t.timerMap[e], n
        }),
        (s.clearTimerWithSer = function(e) {
          let t = this,
            n = t.getTimerWithSer(e)
          n && clearTimeout(n)
        }),
        (s.markCallbackInvalid = function(e, t) {
          const n = this
          n.getObjWithSer(e), n.clearTimerWithSer(e)
          const r = n.getCallbackWithSer(e)
          if (r) {
            const o = r.options
            setTimeout(() => {
              r(t || a.newUnknownError(), o)
            }, 0)
          }
        }),
        (s.markAllCallbackInvalid = function(e) {
          const t = this
          Object.keys(this.cmdCallbackMap).forEach(n => {
            t.markCallbackInvalid(n, e)
          })
        }),
        (s.getPacketObj = function(e) {
          let t = null
          if (e && e.raw) {
            const n = e.raw.ser
            o.notundef(n) && (t = this.getObjWithSer(n))
          }
          return t
        }),
        (s.callPacketAckCallback = function(e) {
          const t = this
          if (e && e.raw) {
            const n = e.raw.ser
            if (o.notundef(n)) {
              t.clearTimerWithSer(n)
              const r = t.getCallbackWithSer(n)
              r &&
                (e.promise
                  ? e.promise.then(
                      () => {
                        r(e.error, e.obj)
                      },
                      n => {
                        const o = a.customError('CALLBACK_ACK_ERR', n)
                        t.logger.error(
                          `protocol::callPacketAckCallback: promise error ${JSON.stringify(
                            n
                          )}`
                        ),
                          r(o, e.obj, e.content)
                      }
                    )
                  : r(e.error, e.obj, e.content))
            }
          }
        }),
        (s.onMessage = function(e) {
          const t = this
          t.heartbeat()
          const n = t.parser.parseResponse(e)
          n.notFound &&
            t.logger.warn(
              `protocol::onMessage: packet not found ${JSON.stringify(n)}`
            ),
            n.error
              ? ((n.error.message = `${n.cmd} error: ${n.error.message}`),
                t.logger.error(
                  `protocol::onMessage: packet error ${JSON.stringify(n.error)}`
                ))
              : n.content ||
                n.cmd === 'heartbeat' ||
                t.logger.warn(
                  `protocol::onMessage: packet.content undefined ${JSON.stringify(
                    n
                  )}`
                ),
            n.frequencyControlDuration &&
              (t.logger.error(
                `protocol::onMessage: server freq control ${JSON.stringify(
                  n.cmd
                )}`
              ),
              (t.frequencyControlMap = t.frequencyControlMap || {}),
              (t.frequencyControlMap[n.cmd] = {
                from: +new Date(),
                duration: n.frequencyControlDuration,
              })),
            (n.obj = t.getPacketObj(n)),
            n.cmd !== 'heartbeat' &&
              t.logger.log(`protocol::recvCmd: ${n.cmd} ${n.rawStr}`)
          const r = `process${o.capFirstLetter(n.service)}`
          t[r]
            ? (t.logger.warn(`protocol::recvCmd: ${n.cmd} ${r}`, n.content),
              t[r](n))
            : t.logger.warn(`protocol::onMessage: ${r} not found`),
            t.callPacketAckCallback(n)
        }),
        (s.onMiscError = function(e, t, n) {
          t && this.notifyError(e, t, n)
        }),
        (s.notifyError = function(e, t, n) {
          const r = this
          if (r.isConnected()) {
            const o = [`${e || ''} ${r.name} ${JSON.stringify(t)}`]
            n && o.push(n),
              r.logger.error.apply(r.logger.error, o),
              r.options.onerror(t, n)
          }
        }),
        (s.emitAPI = function(e) {
          let t = e.type,
            n = e.obj
          this.api.emit(t, n)
        }),
        (e.exports = r),
        n(79),
        n(78),
        n(80),
        n(81)
    },
    function(e, t, n) {
      function r(e) {
        const t = this
        e.resend
          ? (i.verifyOptions(e, 'idClient'), (t.idClient = e.idClient))
          : (t.idClient = i.guid()),
          (t.type = l[e.type]),
          (t.resend = e.resend ? 1 : 0),
          a(e.custom) &&
            (o(e.custom) === 'object'
              ? (t.logger.info(
                  'model::Message: custom should be JsonString, auto transfer'
                ),
                (t.custom = JSON.stringify(e.custom)))
              : (t.custom = `${e.custom}`)),
          a(e.text) && (t.body = `${e.text}`),
          a(e.body) && (t.body = `${e.body}`),
          a(e.yidunEnable) && (t.yidunEnable = e.yidunEnable ? 1 : 0),
          a(e.antiSpamContent) &&
            (o(e.antiSpamContent) === 'object'
              ? (t.logger.info(
                  'model::Message: antiSpamContent should be JsonString, auto transfer'
                ),
                (t.antiSpamContent = JSON.stringify(e.antiSpamContent)))
              : (t.antiSpamContent = `${e.antiSpamContent}`)),
          a(e.antiSpamBusinessId) &&
            (o(e.antiSpamBusinessId) === 'object'
              ? (t.logger.info(
                  'model::Message: antiSpamBusinessId should be JsonString, auto transfer'
                ),
                (t.antiSpamBusinessId = JSON.stringify(e.antiSpamBusinessId)))
              : (t.antiSpamBusinessId = `${e.antiSpamBusinessId}`)),
          a(e.skipHistory) && (t.skipHistory = e.skipHistory ? 1 : 0)
      }
      var o =
          typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'
            ? function(e) {
                return typeof e
              }
            : function(e) {
                return e &&
                  typeof Symbol === 'function' &&
                  e.constructor === Symbol &&
                  e !== Symbol.prototype
                  ? 'symbol'
                  : typeof e
              },
        i = n(1),
        a = i.notundef,
        s = i.exist,
        c = n(29),
        u = n(68),
        l = u.typeMap
      ;(r.validTypes = u.validTypes),
        (r.getType = u.getType),
        (r.reverse = function(e) {
          let t = i.filterObj(
            e,
            'chatroomId idClient from fromNick fromAvatar fromCustom userUpdateTime custom status'
          )
          return (
            (t = i.merge(t, {
              fromClientType: c.reverseType(e.fromClientType),
              time: +e.time,
              type: r.getType(e),
              text: s(e.body) ? e.body : '',
              resend: +e.resend === 1,
            })),
            a(t.userUpdateTime) && (t.userUpdateTime = +t.userUpdateTime),
            (t.status = t.status || 'success'),
            t
          )
        }),
        (r.setExtra = function(e, t) {
          u.setFlow(e, t)
        }),
        (e.exports = r)
    },
    ,
    ,
    ,
    function(e, t, n) {
      function r(e) {
        this.mixin(e)
      }
      let o = n(1),
        i = o.undef,
        a = n(5),
        s = n(62),
        c = n(84),
        u = n(86),
        l = n(82),
        p = n(83),
        f = n(85)
      r.prototype.mixin = function(e) {
        const t = this
        ;(this.configMap = this.configMap || {}),
          ['idMap', 'cmdConfig', 'packetConfig'].forEach(n => {
            t.configMap[n] = o.merge(
              {},
              t.configMap[n],
              e.configMap && e.configMap[n]
            )
          }),
          ['serializeMap', 'unserializeMap'].forEach(n => {
            t[n] = o.merge({}, t[n], e[n])
          })
      }
      let d = new r({ configMap: s, serializeMap: c, unserializeMap: u }),
        m = new r({ configMap: l, serializeMap: p, unserializeMap: f })
      ;(r.getInstance = function(e) {
        switch (e) {
          case 'IM':
            return d
          case 'Chatroom':
            return m
        }
      }),
        (r.prototype.createCmd = (function() {
          let e = 1
          return function(t, n) {
            let r = this,
              o = this.configMap.cmdConfig[t]
            return (
              (t = {
                SID: o.sid,
                CID: o.cid,
                SER: t === 'heartbeat' ? 0 : e++,
              }),
              o.params &&
                ((t.Q = []),
                o.params.forEach(e => {
                  let o = e.type,
                    a = e.name,
                    s = e.entity,
                    c = n[a]
                  if (!i(c)) {
                    switch (o) {
                      case 'PropertyArray':
                        ;(o = 'ArrayMable'),
                          (c = c.map(e => {
                            return { t: 'Property', v: r.serialize(e, s) }
                          }))
                        break
                      case 'Property':
                        c = r.serialize(c, a)
                        break
                      case 'bool':
                        c = c ? 'true' : 'false'
                    }
                    t.Q.push({ t: o, v: c })
                  }
                })),
              t
            )
          }
        })()),
        (r.prototype.parseResponse = function(e) {
          let t = this,
            n = JSON.parse(e),
            r = { raw: n, rawStr: e, error: a.genError(n.code) },
            i = t.configMap.packetConfig[`${n.sid}_${n.cid}`]
          if (!i) return (r.notFound = { sid: n.sid, cid: n.cid }), r
          let s = n.r,
            c = i.service === 'notify' && !i.cmd
          if (((r.isNotify = c), c)) {
            const u = n.r[1].headerPacket
            if (
              ((i = t.configMap.packetConfig[`${u.sid}_${u.cid}`]),
              (s = n.r[1].body),
              !i)
            )
              return (r.notFound = { sid: u.sid, cid: u.cid }), r
          }
          if (
            ((r.service = i.service),
            (r.cmd = i.cmd),
            r.error && r.error.code === 416)
          ) {
            const l = s[0]
            l && (r.frequencyControlDuration = 1e3 * l)
          }
          let p = !1
          return (
            r.error &&
              i.trivialErrorCodes &&
              (p = i.trivialErrorCodes.indexOf(r.error.code) !== -1),
            (r.error && !p) ||
              !i.response ||
              ((r.content = {}),
              i.response.forEach((e, i) => {
                const a = s[i]
                if (!o.undef(a)) {
                  let u = e.type,
                    l = e.name,
                    p = e.entity || l
                  switch (u) {
                    case 'Property':
                      r.content[l] = t.unserialize(a, p)
                      break
                    case 'PropertyArray':
                      ;(r.content[l] = []),
                        a.forEach(e => {
                          r.content[l].push(t.unserialize(e, p))
                        })
                      break
                    case 'KVArray':
                      r.content[l] = a
                      break
                    case 'long':
                    case 'Long':
                    case 'byte':
                    case 'Byte':
                    case 'Number':
                      r.content[l] = +a
                      break
                    default:
                      r.content[l] = a
                  }
                  if ((c && l === 'msg') || l === 'sysMsg') {
                    const f = r.content[l]
                    o.isObject(f) &&
                      !f.idServer &&
                      ((f.idServer = `${n.r[0]}`),
                      f.type &&
                        f.type === '8' &&
                        f.deletedIdClient &&
                        (f.idServer = f.deletedIdClient))
                  }
                }
              })),
            r
          )
        }),
        (r.prototype.serialize = function(e, t) {
          let n = this.serializeMap[t],
            r = {}
          for (const o in n) e.hasOwnProperty(o) && (r[n[o]] = e[o])
          return r
        }),
        (r.prototype.unserialize = function(e, t) {
          let n = this.unserializeMap[t],
            r = {}
          if (e) for (const o in n) e.hasOwnProperty(o) && (r[n[o]] = e[o])
          return r
        }),
        (e.exports = r)
    },
    ,
    ,
    function(e, t, n) {
      let r = n(35),
        o = n(90),
        i = n(94)
      ;(r.json = o), (r.upload = i), (e.exports = r)
    },
    function(e, t, n) {
      let r, o
      !(function(i, a) {
        ;(r = a),
          (o = typeof r === 'function' ? r.call(t, n, t, e) : r),
          !(void 0 !== o && (e.exports = o))
      })(this, () => {
        let e,
          t,
          n,
          r,
          o = Function.call,
          i = Object.prototype,
          a = o.bind(i.hasOwnProperty),
          s = o.bind(i.propertyIsEnumerable),
          c = o.bind(i.toString),
          u = a(i, '__defineGetter__')
        u &&
          ((e = o.bind(i.__defineGetter__)),
          (t = o.bind(i.__defineSetter__)),
          (n = o.bind(i.__lookupGetter__)),
          (r = o.bind(i.__lookupSetter__)))
        const l = function(e) {
          return e == null || (typeof e !== 'object' && typeof e !== 'function')
        }
        Object.getPrototypeOf ||
          (Object.getPrototypeOf = function(e) {
            const t = e.__proto__
            return t || t === null
              ? t
              : c(e.constructor) === '[object Function]'
                ? e.constructor.prototype
                : e instanceof Object ? i : null
          })
        const p = function(e) {
          try {
            return (
              (e.sentinel = 0),
              Object.getOwnPropertyDescriptor(e, 'sentinel').value === 0
            )
          } catch (t) {
            return !1
          }
        }
        if (Object.defineProperty) {
          let f = p({}),
            d =
              typeof document === 'undefined' ||
              p(document.createElement('div'))
          if (!d || !f) var m = Object.getOwnPropertyDescriptor
        }
        if (!Object.getOwnPropertyDescriptor || m) {
          const h = 'Object.getOwnPropertyDescriptor called on a non-object: '
          Object.getOwnPropertyDescriptor = function(e, t) {
            if (l(e)) throw new TypeError(h + e)
            if (m)
              try {
                return m.call(Object, e, t)
              } catch (o) {}
            let c
            if (!a(e, t)) return c
            if (((c = { enumerable: s(e, t), configurable: !0 }), u)) {
              let p = e.__proto__,
                f = e !== i
              f && (e.__proto__ = i)
              let d = n(e, t),
                y = r(e, t)
              if ((f && (e.__proto__ = p), d || y))
                return d && (c.get = d), y && (c.set = y), c
            }
            return (c.value = e[t]), (c.writable = !0), c
          }
        }
        if (
          (Object.getOwnPropertyNames ||
            (Object.getOwnPropertyNames = function(e) {
              return Object.keys(e)
            }),
          !Object.create)
        ) {
          let y,
            g = !({ __proto__: null } instanceof Object),
            v = function() {
              if (!document.domain) return !1
              try {
                return !!new ActiveXObject('htmlfile')
              } catch (e) {
                return !1
              }
            },
            b = function() {
              let e, t
              t = new ActiveXObject('htmlfile')
              const n = 'script'
              return (
                t.write(`<${n}></${n}>`),
                t.close(),
                (e = t.parentWindow.Object.prototype),
                (t = null),
                e
              )
            },
            w = function() {
              let e,
                t = document.createElement('iframe'),
                n = document.body || document.documentElement
              return (
                (t.style.display = 'none'),
                n.appendChild(t),
                (t.src = 'javascript:'),
                (e = t.contentWindow.Object.prototype),
                n.removeChild(t),
                (t = null),
                e
              )
            }
          ;(y =
            g || typeof document === 'undefined'
              ? function() {
                  return { __proto__: null }
                }
              : function() {
                  const e = v() ? b() : w()
                  delete e.constructor,
                    delete e.hasOwnProperty,
                    delete e.propertyIsEnumerable,
                    delete e.isPrototypeOf,
                    delete e.toLocaleString,
                    delete e.toString,
                    delete e.valueOf
                  const t = function() {}
                  return (
                    (t.prototype = e),
                    (y = function() {
                      return new t()
                    }),
                    new t()
                  )
                }),
            (Object.create = function(e, t) {
              let n,
                r = function() {}
              if (e === null) n = y()
              else {
                if (e !== null && l(e))
                  throw new TypeError(
                    'Object prototype may only be an Object or null'
                  )
                ;(r.prototype = e), (n = new r()), (n.__proto__ = e)
              }
              return void 0 !== t && Object.defineProperties(n, t), n
            })
        }
        const k = function(e) {
          try {
            return Object.defineProperty(e, 'sentinel', {}), 'sentinel' in e
          } catch (t) {
            return !1
          }
        }
        if (Object.defineProperty) {
          let T = k({}),
            S =
              typeof document === 'undefined' ||
              k(document.createElement('div'))
          if (!T || !S)
            var M = Object.defineProperty,
              _ = Object.defineProperties
        }
        if (!Object.defineProperty || M) {
          let x = 'Property description must be an object: ',
            C = 'Object.defineProperty called on non-object: ',
            O = 'getters & setters can not be defined on this javascript engine'
          Object.defineProperty = function(o, a, s) {
            if (l(o)) throw new TypeError(C + o)
            if (l(s)) throw new TypeError(x + s)
            if (M)
              try {
                return M.call(Object, o, a, s)
              } catch (c) {}
            if ('value' in s)
              if (u && (n(o, a) || r(o, a))) {
                const p = o.__proto__
                ;(o.__proto__ = i),
                  delete o[a],
                  (o[a] = s.value),
                  (o.__proto__ = p)
              } else o[a] = s.value
            else {
              let f = 'get' in s,
                d = 'set' in s
              if (!u && (f || d)) throw new TypeError(O)
              f && e(o, a, s.get), d && t(o, a, s.set)
            }
            return o
          }
        }
        ;(Object.defineProperties && !_) ||
          (Object.defineProperties = function(e, t) {
            if (_)
              try {
                return _.call(Object, e, t)
              } catch (n) {}
            return (
              Object.keys(t).forEach(n => {
                n !== '__proto__' && Object.defineProperty(e, n, t[n])
              }),
              e
            )
          }),
          Object.seal ||
            (Object.seal = function(e) {
              if (Object(e) !== e)
                throw new TypeError(
                  'Object.seal can only be called on Objects.'
                )
              return e
            }),
          Object.freeze ||
            (Object.freeze = function(e) {
              if (Object(e) !== e)
                throw new TypeError(
                  'Object.freeze can only be called on Objects.'
                )
              return e
            })
        try {
          Object.freeze(() => {})
        } catch (E) {
          Object.freeze = (function(e) {
            return function(t) {
              return typeof t === 'function' ? t : e(t)
            }
          })(Object.freeze)
        }
        Object.preventExtensions ||
          (Object.preventExtensions = function(e) {
            if (Object(e) !== e)
              throw new TypeError(
                'Object.preventExtensions can only be called on Objects.'
              )
            return e
          }),
          Object.isSealed ||
            (Object.isSealed = function(e) {
              if (Object(e) !== e)
                throw new TypeError(
                  'Object.isSealed can only be called on Objects.'
                )
              return !1
            }),
          Object.isFrozen ||
            (Object.isFrozen = function(e) {
              if (Object(e) !== e)
                throw new TypeError(
                  'Object.isFrozen can only be called on Objects.'
                )
              return !1
            }),
          Object.isExtensible ||
            (Object.isExtensible = function(e) {
              if (Object(e) !== e)
                throw new TypeError(
                  'Object.isExtensible can only be called on Objects.'
                )
              for (var t = ''; a(e, t); ) t += '?'
              e[t] = !0
              const n = a(e, t)
              return delete e[t], n
            })
      })
    },
    function(e, t) {},
    function(module, exports, __webpack_require__) {
      let __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__
      ;(function(module) {
        /*! Socket.IO.js build:0.9.11, development. Copyright(c) 2011 LearnBoost <dev@learnboost.com> MIT Licensed */
        let io = module.exports
        window.io
          ? module && (module.exports = io = window.io)
          : (window.io = io),
          (function() {
            if (
              ((function(e, t) {
                const n = e
                ;(n.version = '0.9.11'),
                  (n.protocol = 1),
                  (n.transports = []),
                  (n.j = []),
                  (n.sockets = {}),
                  (n.connect = function(e, r) {
                    let o,
                      i,
                      a = n.util.parseUri(e)
                    t &&
                      t.location &&
                      ((a.protocol =
                        a.protocol || t.location.protocol.slice(0, -1)),
                      (a.host =
                        a.host ||
                        (t.document ? t.document.domain : t.location.hostname)),
                      (a.port = a.port || t.location.port)),
                      (o = n.util.uniqueUri(a))
                    const s = {
                      host: a.host,
                      secure: a.protocol == 'https',
                      port: a.port || (a.protocol == 'https' ? 443 : 80),
                      query: a.query || '',
                    }
                    return (
                      n.util.merge(s, r),
                      (!s['force new connection'] && n.sockets[o]) ||
                        (i = new n.Socket(s)),
                      !s['force new connection'] && i && (n.sockets[o] = i),
                      (i = i || n.sockets[o]),
                      i.of(a.path.length > 1 ? a.path : '')
                    )
                  })
              })(module.exports, window),
              (function(e, t) {
                let n = (e.util = {}),
                  r = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,
                  o = [
                    'source',
                    'protocol',
                    'authority',
                    'userInfo',
                    'user',
                    'password',
                    'host',
                    'port',
                    'relative',
                    'path',
                    'directory',
                    'file',
                    'query',
                    'anchor',
                  ]
                ;(n.parseUri = function(e) {
                  for (var t = r.exec(e || ''), n = {}, i = 14; i--; )
                    n[o[i]] = t[i] || ''
                  return n
                }),
                  (n.uniqueUri = function(e) {
                    let n = e.protocol,
                      r = e.host,
                      o = e.port
                    return (
                      'document' in t
                        ? ((r = r || document.domain),
                          (o =
                            o ||
                            (n == 'https' &&
                            document.location.protocol !== 'https:'
                              ? 443
                              : document.location.port)))
                        : ((r = r || 'localhost'),
                          o || n != 'https' || (o = 443)),
                      `${n || 'http'}://${r}:${o || 80}`
                    )
                  }),
                  (n.query = function(e, t) {
                    let r = n.chunkQuery(e || ''),
                      o = []
                    n.merge(r, n.chunkQuery(t || ''))
                    for (const i in r)
                      r.hasOwnProperty(i) && o.push(`${i}=${r[i]}`)
                    return o.length ? `?${o.join('&')}` : ''
                  }),
                  (n.chunkQuery = function(e) {
                    for (
                      var t, n = {}, r = e.split('&'), o = 0, i = r.length;
                      o < i;
                      ++o
                    )
                      (t = r[o].split('=')), t[0] && (n[t[0]] = t[1])
                    return n
                  })
                let i = !1
                ;(n.load = function(e) {
                  return ('document' in t &&
                    document.readyState === 'complete') ||
                    i
                    ? e()
                    : void n.on(t, 'load', e, !1)
                }),
                  (n.on = function(e, t, n, r) {
                    e.attachEvent
                      ? e.attachEvent(`on${t}`, n)
                      : e.addEventListener && e.addEventListener(t, n, r)
                  }),
                  (n.request = function(e) {
                    if (
                      e &&
                      typeof XDomainRequest !== 'undefined' &&
                      !n.ua.hasCORS
                    )
                      return new XDomainRequest()
                    if (
                      typeof XMLHttpRequest !== 'undefined' &&
                      (!e || n.ua.hasCORS)
                    )
                      return new XMLHttpRequest()
                    if (!e)
                      try {
                        return new window[
                          (['Active'].concat('Object').join('X'))
                        ]('Microsoft.XMLHTTP')
                      } catch (t) {}
                    return null
                  }),
                  typeof window !== 'undefined' &&
                    n.load(() => {
                      i = !0
                    }),
                  (n.defer = function(e) {
                    return n.ua.webkit && typeof importScripts === 'undefined'
                      ? void n.load(() => {
                          setTimeout(e, 100)
                        })
                      : e()
                  }),
                  (n.merge = function(e, t, r, o) {
                    let i,
                      a = o || [],
                      s = typeof r === 'undefined' ? 2 : r
                    for (i in t)
                      t.hasOwnProperty(i) &&
                        n.indexOf(a, i) < 0 &&
                        (typeof e[i] === 'object' && s
                          ? n.merge(e[i], t[i], s - 1, a)
                          : ((e[i] = t[i]), a.push(t[i])))
                    return e
                  }),
                  (n.mixin = function(e, t) {
                    n.merge(e.prototype, t.prototype)
                  }),
                  (n.inherit = function(e, t) {
                    function n() {}
                    ;(n.prototype = t.prototype), (e.prototype = new n())
                  }),
                  (n.isArray =
                    Array.isArray ||
                    function(e) {
                      return (
                        Object.prototype.toString.call(e) === '[object Array]'
                      )
                    }),
                  (n.intersect = function(e, t) {
                    for (
                      var r = [],
                        o = e.length > t.length ? e : t,
                        i = e.length > t.length ? t : e,
                        a = 0,
                        s = i.length;
                      a < s;
                      a++
                    )
                      ~n.indexOf(o, i[a]) && r.push(i[a])
                    return r
                  }),
                  (n.indexOf = function(e, t, n) {
                    for (
                      var r = e.length,
                        n = n < 0 ? (n + r < 0 ? 0 : n + r) : n || 0;
                      n < r && e[n] !== t;
                      n++
                    );
                    return r <= n ? -1 : n
                  }),
                  (n.toArray = function(e) {
                    for (var t = [], n = 0, r = e.length; n < r; n++)
                      t.push(e[n])
                    return t
                  }),
                  (n.ua = {}),
                  (n.ua.hasCORS =
                    typeof XMLHttpRequest !== 'undefined' &&
                    (function() {
                      try {
                        var e = new XMLHttpRequest()
                      } catch (t) {
                        return !1
                      }
                      return void 0 != e.withCredentials
                    })()),
                  (n.ua.webkit =
                    typeof navigator !== 'undefined' &&
                    /webkit/i.test(navigator.userAgent)),
                  (n.ua.iDevice =
                    typeof navigator !== 'undefined' &&
                    /iPad|iPhone|iPod/i.test(navigator.userAgent))
              })(typeof io !== 'undefined' ? io : module.exports, window),
              (function(e, t) {
                function n() {}
                ;(e.EventEmitter = n),
                  (n.prototype.on = function(e, n) {
                    return (
                      this.$events || (this.$events = {}),
                      this.$events[e]
                        ? t.util.isArray(this.$events[e])
                          ? this.$events[e].push(n)
                          : (this.$events[e] = [this.$events[e], n])
                        : (this.$events[e] = n),
                      this
                    )
                  }),
                  (n.prototype.addListener = n.prototype.on),
                  (n.prototype.once = function(e, t) {
                    function n() {
                      r.removeListener(e, n), t.apply(this, arguments)
                    }
                    var r = this
                    return (n.listener = t), this.on(e, n), this
                  }),
                  (n.prototype.removeListener = function(e, n) {
                    if (this.$events && this.$events[e]) {
                      const r = this.$events[e]
                      if (t.util.isArray(r)) {
                        for (var o = -1, i = 0, a = r.length; i < a; i++)
                          if (
                            r[i] === n ||
                            (r[i].listener && r[i].listener === n)
                          ) {
                            o = i
                            break
                          }
                        if (o < 0) return this
                        r.splice(o, 1), r.length || delete this.$events[e]
                      } else
                        (r === n || (r.listener && r.listener === n)) &&
                          delete this.$events[e]
                    }
                    return this
                  }),
                  (n.prototype.removeAllListeners = function(e) {
                    return void 0 === e
                      ? ((this.$events = {}), this)
                      : (this.$events &&
                          this.$events[e] &&
                          (this.$events[e] = null),
                        this)
                  }),
                  (n.prototype.listeners = function(e) {
                    return (
                      this.$events || (this.$events = {}),
                      this.$events[e] || (this.$events[e] = []),
                      t.util.isArray(this.$events[e]) ||
                        (this.$events[e] = [this.$events[e]]),
                      this.$events[e]
                    )
                  }),
                  (n.prototype.emit = function(e) {
                    if (!this.$events) return !1
                    const n = this.$events[e]
                    if (!n) return !1
                    const r = Array.prototype.slice.call(arguments, 1)
                    if (typeof n === 'function') n.apply(this, r)
                    else {
                      if (!t.util.isArray(n)) return !1
                      for (let o = n.slice(), i = 0, a = o.length; i < a; i++)
                        o[i].apply(this, r)
                    }
                    return !0
                  })
              })(
                typeof io !== 'undefined' ? io : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports
              ),
              (function(exports, nativeJSON) {
                function f(e) {
                  return e < 10 ? `0${e}` : e
                }
                function date(e, t) {
                  return isFinite(e.valueOf())
                    ? `${e.getUTCFullYear()}-${f(e.getUTCMonth() + 1)}-${f(
                        e.getUTCDate()
                      )}T${f(e.getUTCHours())}:${f(e.getUTCMinutes())}:${f(
                        e.getUTCSeconds()
                      )}Z`
                    : null
                }
                function quote(e) {
                  return (
                    (escapable.lastIndex = 0),
                    escapable.test(e)
                      ? `"${e.replace(escapable, e => {
                          const t = meta[e]
                          return typeof t === 'string'
                            ? t
                            : `\\u${`0000${e.charCodeAt(0).toString(16)}`.slice(
                                -4
                              )}`
                        })}"`
                      : `"${e}"`
                  )
                }
                function str(e, t) {
                  let n,
                    r,
                    o,
                    i,
                    a,
                    s = gap,
                    c = t[e]
                  switch ((c instanceof Date && (c = date(e)),
                  typeof rep === 'function' && (c = rep.call(t, e, c)),
                  typeof c)) {
                    case 'string':
                      return quote(c)
                    case 'number':
                      return isFinite(c) ? String(c) : 'null'
                    case 'boolean':
                    case 'null':
                      return String(c)
                    case 'object':
                      if (!c) return 'null'
                      if (
                        ((gap += indent),
                        (a = []),
                        Object.prototype.toString.apply(c) === '[object Array]')
                      ) {
                        for (i = c.length, n = 0; n < i; n += 1)
                          a[n] = str(n, c) || 'null'
                        return (
                          (o =
                            a.length === 0
                              ? '[]'
                              : gap
                                ? `[\n${gap}${a.join(`,\n${gap}`)}\n${s}]`
                                : `[${a.join(',')}]`),
                          (gap = s),
                          o
                        )
                      }
                      if (rep && typeof rep === 'object')
                        for (i = rep.length, n = 0; n < i; n += 1)
                          typeof rep[n] === 'string' &&
                            ((r = rep[n]),
                            (o = str(r, c)),
                            o && a.push(quote(r) + (gap ? ': ' : ':') + o))
                      else
                        for (r in c)
                          Object.prototype.hasOwnProperty.call(c, r) &&
                            ((o = str(r, c)),
                            o && a.push(quote(r) + (gap ? ': ' : ':') + o))
                      return (
                        (o =
                          a.length === 0
                            ? '{}'
                            : gap
                              ? `{\n${gap}${a.join(`,\n${gap}`)}\n${s}}`
                              : `{${a.join(',')}}`),
                        (gap = s),
                        o
                      )
                  }
                }
                if (nativeJSON && nativeJSON.parse)
                  return (exports.JSON = {
                    parse: nativeJSON.parse,
                    stringify: nativeJSON.stringify,
                  })
                var JSON = (exports.JSON = {}),
                  cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                  escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                  gap,
                  indent,
                  meta = {
                    '\b': '\\b',
                    '\t': '\\t',
                    '\n': '\\n',
                    '\f': '\\f',
                    '\r': '\\r',
                    '"': '\\"',
                    '\\': '\\\\',
                  },
                  rep
                ;(JSON.stringify = function(e, t, n) {
                  let r
                  if (((gap = ''), (indent = ''), typeof n === 'number'))
                    for (r = 0; r < n; r += 1) indent += ' '
                  else typeof n === 'string' && (indent = n)
                  if (
                    ((rep = t),
                    t &&
                      typeof t !== 'function' &&
                      (typeof t !== 'object' || typeof t.length !== 'number'))
                  )
                    throw new Error('JSON.stringify')
                  return str('', { '': e })
                }),
                  (JSON.parse = function(text, reviver) {
                    function walk(e, t) {
                      let n,
                        r,
                        o = e[t]
                      if (o && typeof o === 'object')
                        for (n in o)
                          Object.prototype.hasOwnProperty.call(o, n) &&
                            ((r = walk(o, n)),
                            void 0 !== r ? (o[n] = r) : delete o[n])
                      return reviver.call(e, t, o)
                    }
                    let j
                    if (
                      ((text = String(text)),
                      (cx.lastIndex = 0),
                      cx.test(text) &&
                        (text = text.replace(cx, e => {
                          return `\\u${`0000${e
                            .charCodeAt(0)
                            .toString(16)}`.slice(-4)}`
                        })),
                      /^[\],:{}\s]*$/.test(
                        text
                          .replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
                          .replace(
                            /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
                            ']'
                          )
                          .replace(/(?:^|:|,)(?:\s*\[)+/g, '')
                      ))
                    )
                      return (
                        (j = eval(`(${text})`)),
                        typeof reviver === 'function' ? walk({ '': j }, '') : j
                      )
                    throw new SyntaxError('JSON.parse')
                  })
              })(
                typeof io !== 'undefined' ? io : module.exports,
                typeof JSON !== 'undefined' ? JSON : void 0
              ),
              (function(e, t) {
                let n = (e.parser = {}),
                  r = (n.packets = [
                    'disconnect',
                    'connect',
                    'heartbeat',
                    'message',
                    'json',
                    'event',
                    'ack',
                    'error',
                    'noop',
                  ]),
                  o = (n.reasons = [
                    'transport not supported',
                    'client not handshaken',
                    'unauthorized',
                  ]),
                  i = (n.advice = ['reconnect']),
                  a = t.JSON,
                  s = t.util.indexOf
                ;(n.encodePacket = function(e) {
                  let t = s(r, e.type),
                    n = e.id || '',
                    c = e.endpoint || '',
                    u = e.ack,
                    l = null
                  switch (e.type) {
                    case 'error':
                      var p = e.reason ? s(o, e.reason) : '',
                        f = e.advice ? s(i, e.advice) : ''
                      ;(p === '' && f === '') ||
                        (l = p + (f !== '' ? `+${f}` : ''))
                      break
                    case 'message':
                      e.data !== '' && (l = e.data)
                      break
                    case 'event':
                      var d = { name: e.name }
                      e.args && e.args.length && (d.args = e.args),
                        (l = a.stringify(d))
                      break
                    case 'json':
                      l = a.stringify(e.data)
                      break
                    case 'connect':
                      e.qs && (l = e.qs)
                      break
                    case 'ack':
                      l =
                        e.ackId +
                        (e.args && e.args.length
                          ? `+${a.stringify(e.args)}`
                          : '')
                  }
                  const m = [t, n + (u == 'data' ? '+' : ''), c]
                  return l !== null && void 0 !== l && m.push(l), m.join(':')
                }),
                  (n.encodePayload = function(e) {
                    let t = ''
                    if (e.length == 1) return e[0]
                    for (let n = 0, r = e.length; n < r; n++) {
                      const o = e[n]
                      t += `�${o.length}�${e[n]}`
                    }
                    return t
                  })
                const c = /([^:]+):([0-9]+)?(\+)?:([^:]+)?:?([\s\S]*)?/
                ;(n.decodePacket = function(e) {
                  var t = e.match(c)
                  if (!t) return {}
                  var n = t[2] || '',
                    e = t[5] || '',
                    s = { type: r[t[1]], endpoint: t[4] || '' }
                  switch ((n &&
                    ((s.id = n), t[3] ? (s.ack = 'data') : (s.ack = !0)),
                  s.type)) {
                    case 'error':
                      var t = e.split('+')
                      ;(s.reason = o[t[0]] || ''), (s.advice = i[t[1]] || '')
                      break
                    case 'message':
                      s.data = e || ''
                      break
                    case 'event':
                      try {
                        const u = a.parse(e)
                        ;(s.name = u.name), (s.args = u.args)
                      } catch (l) {}
                      s.args = s.args || []
                      break
                    case 'json':
                      try {
                        s.data = a.parse(e)
                      } catch (l) {}
                      break
                    case 'connect':
                      s.qs = e || ''
                      break
                    case 'ack':
                      var t = e.match(/^([0-9]+)(\+)?(.*)/)
                      if (t && ((s.ackId = t[1]), (s.args = []), t[3]))
                        try {
                          s.args = t[3] ? a.parse(t[3]) : []
                        } catch (l) {}
                      break
                    case 'disconnect':
                    case 'heartbeat':
                  }
                  return s
                }),
                  (n.decodePayload = function(e) {
                    const t = function(e, t) {
                      for (var n = 0, r = e; r < t.length; r++) {
                        if (t.charAt(r) == '�') return n
                        n++
                      }
                      return n
                    }
                    if (e.charAt(0) == '�') {
                      for (var r = [], o = 1, i = ''; o < e.length; o++)
                        if (e.charAt(o) == '�') {
                          let a = e.substr(o + 1).substr(0, i)
                          if (
                            e.charAt(o + 1 + Number(i)) != '�' &&
                            o + 1 + Number(i) != e.length
                          ) {
                            const s = Number(i)
                            ;(l = t(o + s + 1, e)),
                              (a = e.substr(o + 1).substr(0, s + l)),
                              (o += l)
                          }
                          r.push(n.decodePacket(a)),
                            (o += Number(i) + 1),
                            (i = '')
                        } else i += e.charAt(o)
                      return r
                    }
                    return [n.decodePacket(e)]
                  })
              })(
                typeof io !== 'undefined' ? io : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports
              ),
              (function(e, t) {
                function n(e, t) {
                  ;(this.socket = e), (this.sessid = t)
                }
                ;(e.Transport = n),
                  t.util.mixin(n, t.EventEmitter),
                  (n.prototype.heartbeats = function() {
                    return !0
                  }),
                  (n.prototype.onData = function(e) {
                    if (this !== this.socket.transport) return this
                    if (
                      (this.clearCloseTimeout(),
                      (this.socket.connected ||
                        this.socket.connecting ||
                        this.socket.reconnecting) &&
                        this.setCloseTimeout(),
                      e !== '')
                    ) {
                      const n = t.parser.decodePayload(e)
                      if (n && n.length)
                        for (let r = 0, o = n.length; r < o; r++)
                          this.onPacket(n[r])
                    }
                    return this
                  }),
                  (n.prototype.onPacket = function(e) {
                    return (
                      this.socket.setHeartbeatTimeout(),
                      e.type == 'heartbeat'
                        ? this.onHeartbeat()
                        : (e.type == 'connect' &&
                            e.endpoint == '' &&
                            this.onConnect(),
                          e.type == 'error' &&
                            e.advice == 'reconnect' &&
                            (this.isOpen = !1),
                          this.socket.onPacket(e),
                          this)
                    )
                  }),
                  (n.prototype.setCloseTimeout = function() {
                    if (!this.closeTimeout) {
                      const e = this
                      this.closeTimeout = setTimeout(() => {
                        e.onDisconnect()
                      }, this.socket.closeTimeout)
                    }
                  }),
                  (n.prototype.onDisconnect = function() {
                    return (
                      this.isOpen && this.close(),
                      this.clearTimeouts(),
                      this.socket.transport === this
                        ? this.socket.onDisconnect()
                        : this.socket.setBuffer(!1),
                      this
                    )
                  }),
                  (n.prototype.onConnect = function() {
                    return this.socket.onConnect(), this
                  }),
                  (n.prototype.clearCloseTimeout = function() {
                    this.closeTimeout &&
                      (clearTimeout(this.closeTimeout),
                      (this.closeTimeout = null))
                  }),
                  (n.prototype.clearTimeouts = function() {
                    this.clearCloseTimeout(),
                      this.reopenTimeout && clearTimeout(this.reopenTimeout)
                  }),
                  (n.prototype.packet = function(e) {
                    this.send(t.parser.encodePacket(e))
                  }),
                  (n.prototype.onHeartbeat = function(e) {
                    this.packet({ type: 'heartbeat' })
                  }),
                  (n.prototype.onOpen = function() {
                    ;(this.isOpen = !0),
                      this.clearCloseTimeout(),
                      this.socket.onOpen()
                  }),
                  (n.prototype.onClose = function() {
                    ;(this.isOpen = !1),
                      this.socket.transport === this
                        ? this.socket.onClose()
                        : this.socket.setBuffer(!1),
                      this.onDisconnect()
                  }),
                  (n.prototype.prepareUrl = function() {
                    const e = this.socket.options
                    return `${this.scheme()}://${e.host}:${e.port}/${
                      e.resource
                    }/${t.protocol}/${this.name}/${this.sessid}`
                  }),
                  (n.prototype.ready = function(e, t) {
                    t.call(this)
                  })
              })(
                typeof io !== 'undefined' ? io : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports
              ),
              (function(e, t, n) {
                function r(e) {
                  if (
                    ((this.options = {
                      port: 80,
                      secure: !1,
                      document: 'document' in n && document,
                      resource: 'socket.io',
                      transports: e.transports || t.transports,
                      'connect timeout': 1e4,
                      'try multiple transports': !0,
                      reconnect: !0,
                      'reconnection delay': 500,
                      'reconnection limit': 1 / 0,
                      'reopen delay': 3e3,
                      'max reconnection attempts': 10,
                      'sync disconnect on unload': !1,
                      'auto connect': !0,
                      'flash policy port': 10843,
                      manualFlush: !1,
                    }),
                    t.util.merge(this.options, e),
                    (this.connected = !1),
                    (this.open = !1),
                    (this.connecting = !1),
                    (this.reconnecting = !1),
                    (this.namespaces = {}),
                    (this.buffer = []),
                    (this.doBuffer = !1),
                    this.options['sync disconnect on unload'] &&
                      (!this.isXDomain() || t.util.ua.hasCORS))
                  ) {
                    const r = this
                    t.util.on(
                      n,
                      'beforeunload',
                      () => {
                        r.disconnectSync()
                      },
                      !1
                    )
                  }
                  this.options['auto connect'] && this.connect()
                }
                function o() {}
                ;(e.Socket = r),
                  t.util.mixin(r, t.EventEmitter),
                  (r.prototype.of = function(e) {
                    return (
                      this.namespaces[e] ||
                        ((this.namespaces[e] = new t.SocketNamespace(this, e)),
                        e !== '' &&
                          this.namespaces[e].packet({ type: 'connect' })),
                      this.namespaces[e]
                    )
                  }),
                  (r.prototype.publish = function() {
                    this.emit.apply(this, arguments)
                    let e
                    for (const t in this.namespaces)
                      this.namespaces.hasOwnProperty(t) &&
                        ((e = this.of(t)), e.$emit(...arguments))
                  }),
                  (r.prototype.handshake = function(e) {
                    function n(t) {
                      t instanceof Error
                        ? ((r.connecting = !1), r.onError(t.message))
                        : (console.log(`D handshake success ${t}`),
                          e(...t.split(':')))
                    }
                    var r = this,
                      i = this.options,
                      a = [
                        `http${i.secure ? 's' : ''}:/`,
                        `${i.host}:${i.port}`,
                        i.resource,
                        t.protocol,
                        t.util.query(this.options.query, `t=${+new Date()}`),
                      ].join('/')
                    if (this.isXDomain() && !t.util.ua.hasCORS) {
                      let s = document.getElementsByTagName('script')[0],
                        c = document.createElement('script')
                      ;(c.src = `${a}&jsonp=${t.j.length}`),
                        (c.onreadystatechange = function() {
                          this.readyState == 'loaded' &&
                            c.parentNode &&
                            (c.parentNode.removeChild(c),
                            (r.connecting = !1),
                            !r.reconnecting &&
                              r.onError('Server down or port not open'),
                            r.publish('handshake_failed'))
                        }),
                        s.parentNode.insertBefore(c, s),
                        t.j.push(e => {
                          n(e), c.parentNode.removeChild(c)
                        })
                    } else {
                      const u = t.util.request()
                      u.open('GET', a, !0),
                        (u.timeout = 1e4),
                        this.isXDomain() && (u.withCredentials = !0),
                        (u.onreadystatechange = function() {
                          u.readyState == 4 &&
                            ((u.onreadystatechange = o),
                            u.status == 200
                              ? n(u.responseText)
                              : u.status == 403
                                ? (r.onError(u.responseText),
                                  r.publish('handshake_failed'))
                                : ((r.connecting = !1),
                                  !r.reconnecting && r.onError(u.responseText),
                                  r.publish('handshake_failed')))
                        }),
                        (u.ontimeout = function(e) {
                          ;(r.connecting = !1),
                            !r.reconnecting && r.onError(u.responseText),
                            r.publish('handshake_failed')
                        }),
                        u.send(null)
                    }
                  }),
                  (r.prototype.connect = function(e) {
                    if (this.connecting) return this
                    const n = this
                    return (
                      (n.connecting = !0),
                      this.handshake((r, o, i, a) => {
                        ;(n.sessionid = r),
                          (n.closeTimeout = 1e3 * i),
                          (n.heartbeatTimeout = 1e3 * o),
                          n.transports ||
                            (n.transports = n.origTransports = a
                              ? t.util.intersect(
                                  a.split(','),
                                  n.options.transports
                                )
                              : n.options.transports),
                          console.log(
                            `D options transports: ${n.options.transports}`
                          ),
                          console.log(`D transports: ${n.transports}`),
                          n.setHeartbeatTimeout(),
                          n.once('connect', () => {
                            clearTimeout(n.connectTimeoutTimer),
                              (n.connectTimeoutTimer = null),
                              e && typeof e === 'function' && e()
                          }),
                          n.doConnect()
                      }),
                      this
                    )
                  }),
                  (r.prototype.doConnect = function() {
                    const e = this
                    return (
                      e.transport && e.transport.clearTimeouts(),
                      (e.transport = e.getTransport(e.transports)),
                      e.transport
                        ? void e.transport.ready(e, () => {
                            ;(e.connecting = !0),
                              e.publish('connecting', e.transport.name),
                              e.transport.open(),
                              e.options['connect timeout'] &&
                                (e.connectTimeoutTimer &&
                                  clearTimeout(e.connectTimeoutTimer),
                                (e.connectTimeoutTimer = setTimeout(
                                  e.tryNextTransport.bind(e),
                                  e.options['connect timeout']
                                )))
                          })
                        : e.publish('connect_failed')
                    )
                  }),
                  (r.prototype.getTransport = function(e) {
                    for (
                      var n, r = e || this.transports, o = 0;
                      (n = r[o]);
                      o++
                    )
                      if (
                        (console.log(
                          `D check ${n} ${t.Transport[n].check(
                            this
                          )} , cors ${t.Transport[n].xdomainCheck(this)}`
                        ),
                        t.Transport[n] &&
                          t.Transport[n].check(this) &&
                          (!this.isXDomain() ||
                            t.Transport[n].xdomainCheck(this)))
                      ) {
                        const i = new t.Transport[n](this, this.sessionid)
                        return i
                      }
                    return null
                  }),
                  (r.prototype.tryNextTransport = function() {
                    console.log('D try next transport')
                    const e = this
                    if (
                      !e.connected &&
                      ((e.connecting = !1),
                      e.options['try multiple transports'])
                    ) {
                      for (
                        var t = e.transports;
                        t.length > 0 && t.splice(0, 1)[0] != e.transport.name;

                      );
                      t.length ? e.doConnect() : e.publish('connect_failed')
                    }
                  }),
                  (r.prototype.setHeartbeatTimeout = function() {
                    if (
                      (clearTimeout(this.heartbeatTimeoutTimer),
                      !this.transport || this.transport.heartbeats())
                    ) {
                      const e = this
                      this.heartbeatTimeoutTimer = setTimeout(() => {
                        e.transport && e.transport.onClose()
                      }, this.heartbeatTimeout)
                    }
                  }),
                  (r.prototype.packet = function(e) {
                    return (
                      this.connected && !this.doBuffer
                        ? this.transport.packet(e)
                        : this.buffer.push(e),
                      this
                    )
                  }),
                  (r.prototype.setBuffer = function(e) {
                    ;(this.doBuffer = e),
                      !e &&
                        this.connected &&
                        this.buffer.length &&
                        (this.options.manualFlush || this.flushBuffer())
                  }),
                  (r.prototype.flushBuffer = function() {
                    this.transport.payload(this.buffer), (this.buffer = [])
                  }),
                  (r.prototype.disconnect = function() {
                    return (
                      (this.connected || this.connecting) &&
                        (this.open &&
                          this.of('').packet({ type: 'disconnect' }),
                        this.onDisconnect('booted')),
                      this
                    )
                  }),
                  (r.prototype.disconnectSync = function() {
                    let e = t.util.request(),
                      n = `${[
                        `http${this.options.secure ? 's' : ''}:/`,
                        `${this.options.host}:${this.options.port}`,
                        this.options.resource,
                        t.protocol,
                        '',
                        this.sessionid,
                      ].join('/')}/?disconnect=1`
                    e.open('GET', n, !1),
                      e.send(null),
                      this.onDisconnect('booted')
                  }),
                  (r.prototype.isXDomain = function() {
                    const e =
                      (n && n.location && n.location.port) ||
                      (n && n.location && n.location.protocol == 'https:'
                        ? 443
                        : 80)
                    return (
                      (n &&
                        n.location &&
                        this.options.host !== n.location.hostname) ||
                      this.options.port != e
                    )
                  }),
                  (r.prototype.onConnect = function() {
                    this.connected ||
                      ((this.connected = !0),
                      (this.connecting = !1),
                      this.doBuffer || this.setBuffer(!1),
                      this.emit('connect'))
                  }),
                  (r.prototype.onOpen = function() {
                    this.open = !0
                  }),
                  (r.prototype.onClose = function() {
                    ;(this.open = !1), clearTimeout(this.heartbeatTimeoutTimer)
                  }),
                  (r.prototype.onPacket = function(e) {
                    this.of(e.endpoint).onPacket(e)
                  }),
                  (r.prototype.onError = function(e) {
                    e &&
                      e.advice &&
                      e.advice === 'reconnect' &&
                      (this.connected || this.connecting) &&
                      (this.disconnect(),
                      this.options.reconnect && this.reconnect()),
                      this.publish('error', e && e.reason ? e.reason : e)
                  }),
                  (r.prototype.onDisconnect = function(e) {
                    let t = this.connected,
                      n = this.connecting
                    ;(this.connected = !1),
                      (this.connecting = !1),
                      (this.open = !1),
                      (t || n) &&
                        (this.transport.close(),
                        this.transport.clearTimeouts(),
                        t &&
                          (this.publish('disconnect', e),
                          e != 'booted' &&
                            this.options.reconnect &&
                            !this.reconnecting &&
                            this.reconnect()),
                        n && this.tryNextTransport())
                  }),
                  (r.prototype.reconnect = function() {
                    function e() {
                      if (n.connected) {
                        for (const e in n.namespaces)
                          n.namespaces.hasOwnProperty(e) &&
                            e !== '' &&
                            n.namespaces[e].packet({ type: 'connect' })
                        n.publish(
                          'reconnect',
                          n.transport.name,
                          n.reconnectionAttempts
                        )
                      }
                      clearTimeout(n.reconnectionTimer),
                        n.removeListener('connect_failed', t),
                        n.removeListener('connect', t),
                        (n.reconnecting = !1),
                        delete n.reconnectionAttempts,
                        delete n.reconnectionDelay,
                        delete n.reconnectionTimer,
                        delete n.redoTransports,
                        (n.options['try multiple transports'] = o)
                    }
                    function t() {
                      if (n.reconnecting)
                        return n.connected
                          ? e()
                          : n.connecting && n.reconnecting
                            ? (n.reconnectionTimer = setTimeout(t, 1e3))
                            : void (n.reconnectionAttempts++ >= r
                                ? n.redoTransports
                                  ? (n.publish('reconnect_failed'), e())
                                  : (n.on('connect_failed', t),
                                    (n.options['try multiple transports'] = !0),
                                    (n.transports = n.origTransports),
                                    (n.transport = n.getTransport()),
                                    (n.redoTransports = !0),
                                    n.connect())
                                : (n.reconnectionDelay < i &&
                                    (n.reconnectionDelay *= 2),
                                  n.connect(),
                                  n.publish(
                                    'reconnecting',
                                    n.reconnectionDelay,
                                    n.reconnectionAttempts
                                  ),
                                  (n.reconnectionTimer = setTimeout(
                                    t,
                                    n.reconnectionDelay
                                  ))))
                    }
                    ;(this.reconnecting = !0),
                      (this.reconnectionAttempts = 0),
                      (this.reconnectionDelay = this.options[
                        'reconnection delay'
                      ])
                    var n = this,
                      r = this.options['max reconnection attempts'],
                      o = this.options['try multiple transports'],
                      i = this.options['reconnection limit']
                    ;(this.options['try multiple transports'] = !1),
                      (this.reconnectionTimer = setTimeout(
                        t,
                        this.reconnectionDelay
                      )),
                      this.on('connect', t)
                  })
              })(
                typeof io !== 'undefined' ? io : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports,
                window
              ),
              (function(e, t) {
                function n(e, t) {
                  ;(this.socket = e),
                    (this.name = t || ''),
                    (this.flags = {}),
                    (this.json = new r(this, 'json')),
                    (this.ackPackets = 0),
                    (this.acks = {})
                }
                function r(e, t) {
                  ;(this.namespace = e), (this.name = t)
                }
                ;(e.SocketNamespace = n),
                  t.util.mixin(n, t.EventEmitter),
                  (n.prototype.$emit = t.EventEmitter.prototype.emit),
                  (n.prototype.of = function() {
                    return this.socket.of.apply(this.socket, arguments)
                  }),
                  (n.prototype.packet = function(e) {
                    return (
                      (e.endpoint = this.name),
                      this.socket.packet(e),
                      (this.flags = {}),
                      this
                    )
                  }),
                  (n.prototype.send = function(e, t) {
                    const n = {
                      type: this.flags.json ? 'json' : 'message',
                      data: e,
                    }
                    return (
                      typeof t === 'function' &&
                        ((n.id = ++this.ackPackets),
                        (n.ack = !0),
                        (this.acks[n.id] = t)),
                      this.packet(n)
                    )
                  }),
                  (n.prototype.emit = function(e) {
                    let t = Array.prototype.slice.call(arguments, 1),
                      n = t[t.length - 1],
                      r = { type: 'event', name: e }
                    return (
                      typeof n === 'function' &&
                        ((r.id = ++this.ackPackets),
                        (r.ack = 'data'),
                        (this.acks[r.id] = n),
                        (t = t.slice(0, t.length - 1))),
                      (r.args = t),
                      this.packet(r)
                    )
                  }),
                  (n.prototype.disconnect = function() {
                    return (
                      this.name === ''
                        ? this.socket.disconnect()
                        : (this.packet({ type: 'disconnect' }),
                          this.$emit('disconnect')),
                      this
                    )
                  }),
                  (n.prototype.onPacket = function(e) {
                    function n() {
                      r.packet({
                        type: 'ack',
                        args: t.util.toArray(arguments),
                        ackId: e.id,
                      })
                    }
                    var r = this
                    switch (e.type) {
                      case 'connect':
                        this.$emit('connect')
                        break
                      case 'disconnect':
                        this.name === ''
                          ? this.socket.onDisconnect(e.reason || 'booted')
                          : this.$emit('disconnect', e.reason)
                        break
                      case 'message':
                      case 'json':
                        var o = ['message', e.data]
                        e.ack == 'data'
                          ? o.push(n)
                          : e.ack && this.packet({ type: 'ack', ackId: e.id }),
                          this.$emit.apply(this, o)
                        break
                      case 'event':
                        var o = [e.name].concat(e.args)
                        e.ack == 'data' && o.push(n), this.$emit.apply(this, o)
                        break
                      case 'ack':
                        this.acks[e.ackId] &&
                          (this.acks[e.ackId].apply(this, e.args),
                          delete this.acks[e.ackId])
                        break
                      case 'error':
                        e.advice
                          ? this.socket.onError(e)
                          : e.reason == 'unauthorized'
                            ? this.$emit('connect_failed', e.reason)
                            : this.$emit('error', e.reason)
                    }
                  }),
                  (r.prototype.send = function() {
                    ;(this.namespace.flags[this.name] = !0),
                      this.namespace.send.apply(this.namespace, arguments)
                  }),
                  (r.prototype.emit = function() {
                    ;(this.namespace.flags[this.name] = !0),
                      this.namespace.emit.apply(this.namespace, arguments)
                  })
              })(
                typeof io !== 'undefined' ? io : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports
              ),
              (function(e, t, n) {
                function r(e) {
                  t.Transport.apply(this, arguments)
                }
                ;(e.websocket = r),
                  t.util.inherit(r, t.Transport),
                  (r.prototype.name = 'websocket'),
                  (r.prototype.open = function() {
                    let e,
                      r = t.util.query(this.socket.options.query),
                      o = this
                    return (
                      e || (e = n.MozWebSocket || n.WebSocket),
                      (this.websocket = new e(this.prepareUrl() + r)),
                      (this.websocket.onopen = function() {
                        o.onOpen(), o.socket.setBuffer(!1)
                      }),
                      (this.websocket.onmessage = function(e) {
                        o.onData(e.data)
                      }),
                      (this.websocket.onclose = function() {
                        o.socket.setBuffer(!0), o.onClose()
                      }),
                      (this.websocket.onerror = function(e) {
                        o.onError(e)
                      }),
                      this
                    )
                  }),
                  t.util.ua.iDevice
                    ? (r.prototype.send = function(e) {
                        const t = this
                        return (
                          setTimeout(() => {
                            t.websocket.send(e)
                          }, 0),
                          this
                        )
                      })
                    : (r.prototype.send = function(e) {
                        return this.websocket.send(e), this
                      }),
                  (r.prototype.payload = function(e) {
                    for (let t = 0, n = e.length; t < n; t++) this.packet(e[t])
                    return this
                  }),
                  (r.prototype.close = function() {
                    return this.websocket.close(), this
                  }),
                  (r.prototype.onError = function(e) {
                    this.socket.onError(e)
                  }),
                  (r.prototype.scheme = function() {
                    return this.socket.options.secure ? 'wss' : 'ws'
                  }),
                  (r.check = function() {
                    return (
                      ('WebSocket' in n && !('__addTask' in WebSocket)) ||
                      'MozWebSocket' in n
                    )
                  }),
                  (r.xdomainCheck = function() {
                    return !0
                  }),
                  t.transports.push('websocket')
              })(
                typeof io !== 'undefined' ? io.Transport : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports,
                window
              ),
              (function(e, t) {
                function n() {
                  t.Transport.websocket.apply(this, arguments)
                }
                ;(e.flashsocket = n),
                  t.util.inherit(n, t.Transport.websocket),
                  (n.prototype.name = 'flashsocket'),
                  (n.prototype.open = function() {
                    let e = this,
                      n = arguments
                    return (
                      WebSocket.__addTask(() => {
                        t.Transport.websocket.prototype.open.apply(e, n)
                      }),
                      this
                    )
                  }),
                  (n.prototype.send = function() {
                    let e = this,
                      n = arguments
                    return (
                      WebSocket.__addTask(() => {
                        t.Transport.websocket.prototype.send.apply(e, n)
                      }),
                      this
                    )
                  }),
                  (n.prototype.close = function() {
                    return (
                      (WebSocket.__tasks.length = 0),
                      t.Transport.websocket.prototype.close.call(this),
                      this
                    )
                  }),
                  (n.prototype.ready = function(e, r) {
                    function o() {
                      let t = e.options,
                        o = t['flash policy port'],
                        a = [
                          `http${t.secure ? 's' : ''}:/`,
                          `${t.host}:${t.port}`,
                          t.resource,
                          'static/flashsocket',
                          `WebSocketMain${e.isXDomain() ? 'Insecure' : ''}.swf`,
                        ]
                      n.loaded ||
                        (typeof WEB_SOCKET_SWF_LOCATION === 'undefined' &&
                          (WEB_SOCKET_SWF_LOCATION = a.join('/')),
                        o !== 843 &&
                          WebSocket.loadFlashPolicyFile(
                            `xmlsocket://${t.host}:${o}`
                          ),
                        WebSocket.__initialize(),
                        (n.loaded = !0)),
                        r.call(i)
                    }
                    var i = this
                    return document.body ? o() : void t.util.load(o)
                  }),
                  (n.check = function() {
                    return (
                      !!(
                        typeof WebSocket !== 'undefined' &&
                        '__initialize' in WebSocket &&
                        swfobject
                      ) && swfobject.getFlashPlayerVersion().major >= 10
                    )
                  }),
                  (n.xdomainCheck = function() {
                    return !0
                  }),
                  typeof window !== 'undefined' &&
                    (window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION = !0),
                  t.transports.push('flashsocket')
              })(
                typeof io !== 'undefined' ? io.Transport : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports
              ),
              typeof window !== 'undefined' &&
                typeof window.document !== 'undefined')
            )
              var swfobject = (function() {
                function e() {
                  if (!H) {
                    try {
                      const e = F.getElementsByTagName('body')[0].appendChild(
                        y('span')
                      )
                      e.parentNode.removeChild(e)
                    } catch (t) {
                      return
                    }
                    H = !0
                    for (let n = U.length, r = 0; r < n; r++) U[r]()
                  }
                }
                function t(e) {
                  H ? e() : (U[U.length] = e)
                }
                function n(e) {
                  if (typeof D.addEventListener !== O)
                    D.addEventListener('load', e, !1)
                  else if (typeof F.addEventListener !== O)
                    F.addEventListener('load', e, !1)
                  else if (typeof D.attachEvent !== O) g(D, 'onload', e)
                  else if (typeof D.onload === 'function') {
                    const t = D.onload
                    D.onload = function() {
                      t(), e()
                    }
                  } else D.onload = e
                }
                function r() {
                  L ? o() : i()
                }
                function o() {
                  let e = F.getElementsByTagName('body')[0],
                    t = y(E)
                  t.setAttribute('type', I)
                  let n = e.appendChild(t)
                  if (n) {
                    let r = 0
                    !(function() {
                      if (typeof n.GetVariable !== O) {
                        let o = n.GetVariable('$version')
                        o &&
                          ((o = o.split(' ')[1].split(',')),
                          (J.pv = [
                            parseInt(o[0], 10),
                            parseInt(o[1], 10),
                            parseInt(o[2], 10),
                          ]))
                      } else if (r < 10)
                        return r++, void setTimeout(arguments.callee, 10)
                      e.removeChild(t), (n = null), i()
                    })()
                  } else i()
                }
                function i() {
                  const e = B.length
                  if (e > 0)
                    for (let t = 0; t < e; t++) {
                      let n = B[t].id,
                        r = B[t].callbackFn,
                        o = { success: !1, id: n }
                      if (J.pv[0] > 0) {
                        const i = h(n)
                        if (i)
                          if (!v(B[t].swfVersion) || (J.wk && J.wk < 312))
                            if (B[t].expressInstall && s()) {
                              const l = {}
                              ;(l.data = B[t].expressInstall),
                                (l.width = i.getAttribute('width') || '0'),
                                (l.height = i.getAttribute('height') || '0'),
                                i.getAttribute('class') &&
                                  (l.styleclass = i.getAttribute('class')),
                                i.getAttribute('align') &&
                                  (l.align = i.getAttribute('align'))
                              for (
                                var p = {},
                                  f = i.getElementsByTagName('param'),
                                  d = f.length,
                                  m = 0;
                                m < d;
                                m++
                              )
                                f[m].getAttribute('name').toLowerCase() !=
                                  'movie' &&
                                  (p[f[m].getAttribute('name')] = f[
                                    m
                                  ].getAttribute('value'))
                              c(l, p, n, r)
                            } else u(i), r && r(o)
                          else
                            w(n, !0),
                              r && ((o.success = !0), (o.ref = a(n)), r(o))
                      } else if ((w(n, !0), r)) {
                        const y = a(n)
                        y &&
                          typeof y.SetVariable !== O &&
                          ((o.success = !0), (o.ref = y)),
                          r(o)
                      }
                    }
                }
                function a(e) {
                  let t = null,
                    n = h(e)
                  if (n && n.nodeName == 'OBJECT')
                    if (typeof n.SetVariable !== O) t = n
                    else {
                      const r = n.getElementsByTagName(E)[0]
                      r && (t = r)
                    }
                  return t
                }
                function s() {
                  return (
                    !$ &&
                    v('6.0.65') &&
                    (J.win || J.mac) &&
                    !(J.wk && J.wk < 312)
                  )
                }
                function c(e, t, n, r) {
                  ;($ = !0), (M = r || null), (_ = { success: !1, id: n })
                  const o = h(n)
                  if (o) {
                    o.nodeName == 'OBJECT'
                      ? ((T = l(o)), (S = null))
                      : ((T = o), (S = n)),
                      (e.id = j),
                      (typeof e.width === O ||
                        (!/%$/.test(e.width) && parseInt(e.width, 10) < 310)) &&
                        (e.width = '310'),
                      (typeof e.height === O ||
                        (!/%$/.test(e.height) &&
                          parseInt(e.height, 10) < 137)) &&
                        (e.height = '137'),
                      (F.title = `${F.title.slice(
                        0,
                        47
                      )} - Flash Player Installation`)
                    let i =
                        J.ie && J.win
                          ? ['Active'].concat('').join('X')
                          : 'PlugIn',
                      a = `MMredirectURL=${D.location
                        .toString()
                        .replace(/&/g, '%26')}&MMplayerType=${i}&MMdoctitle=${
                        F.title
                      }`
                    if (
                      (typeof t.flashvars !== O
                        ? (t.flashvars += `&${a}`)
                        : (t.flashvars = a),
                      J.ie && J.win && o.readyState != 4)
                    ) {
                      const s = y('div')
                      ;(n += 'SWFObjectNew'),
                        s.setAttribute('id', n),
                        o.parentNode.insertBefore(s, o),
                        (o.style.display = 'none'),
                        (function() {
                          o.readyState == 4
                            ? o.parentNode.removeChild(o)
                            : setTimeout(arguments.callee, 10)
                        })()
                    }
                    p(e, t, n)
                  }
                }
                function u(e) {
                  if (J.ie && J.win && e.readyState != 4) {
                    const t = y('div')
                    e.parentNode.insertBefore(t, e),
                      t.parentNode.replaceChild(l(e), t),
                      (e.style.display = 'none'),
                      (function() {
                        e.readyState == 4
                          ? e.parentNode.removeChild(e)
                          : setTimeout(arguments.callee, 10)
                      })()
                  } else e.parentNode.replaceChild(l(e), e)
                }
                function l(e) {
                  const t = y('div')
                  if (J.win && J.ie) t.innerHTML = e.innerHTML
                  else {
                    const n = e.getElementsByTagName(E)[0]
                    if (n) {
                      const r = n.childNodes
                      if (r)
                        for (let o = r.length, i = 0; i < o; i++)
                          (r[i].nodeType == 1 && r[i].nodeName == 'PARAM') ||
                            r[i].nodeType == 8 ||
                            t.appendChild(r[i].cloneNode(!0))
                    }
                  }
                  return t
                }
                function p(e, t, n) {
                  let r,
                    o = h(n)
                  if (J.wk && J.wk < 312) return r
                  if (o)
                    if ((typeof e.id === O && (e.id = n), J.ie && J.win)) {
                      let i = ''
                      for (const a in e)
                        e[a] != Object.prototype[a] &&
                          (a.toLowerCase() == 'data'
                            ? (t.movie = e[a])
                            : a.toLowerCase() == 'styleclass'
                              ? (i += ` class="${e[a]}"`)
                              : a.toLowerCase() != 'classid' &&
                                (i += ` ${a}="${e[a]}"`))
                      let s = ''
                      for (const c in t)
                        t[c] != Object.prototype[c] &&
                          (s += `<param name="${c}" value="${t[c]}" />`)
                      ;(o.outerHTML = `<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"${i}>${s}</object>`),
                        (q[q.length] = e.id),
                        (r = h(e.id))
                    } else {
                      const u = y(E)
                      u.setAttribute('type', I)
                      for (const l in e)
                        e[l] != Object.prototype[l] &&
                          (l.toLowerCase() == 'styleclass'
                            ? u.setAttribute('class', e[l])
                            : l.toLowerCase() != 'classid' &&
                              u.setAttribute(l, e[l]))
                      for (const p in t)
                        t[p] != Object.prototype[p] &&
                          p.toLowerCase() != 'movie' &&
                          f(u, p, t[p])
                      o.parentNode.replaceChild(u, o), (r = u)
                    }
                  return r
                }
                function f(e, t, n) {
                  const r = y('param')
                  r.setAttribute('name', t),
                    r.setAttribute('value', n),
                    e.appendChild(r)
                }
                function d(e) {
                  const t = h(e)
                  t &&
                    t.nodeName == 'OBJECT' &&
                    (J.ie && J.win
                      ? ((t.style.display = 'none'),
                        (function() {
                          t.readyState == 4
                            ? m(e)
                            : setTimeout(arguments.callee, 10)
                        })())
                      : t.parentNode.removeChild(t))
                }
                function m(e) {
                  const t = h(e)
                  if (t) {
                    for (const n in t)
                      typeof t[n] === 'function' && (t[n] = null)
                    t.parentNode.removeChild(t)
                  }
                }
                function h(e) {
                  let t = null
                  try {
                    t = F.getElementById(e)
                  } catch (n) {}
                  return t
                }
                function y(e) {
                  return F.createElement(e)
                }
                function g(e, t, n) {
                  e.attachEvent(t, n), (W[W.length] = [e, t, n])
                }
                function v(e) {
                  let t = J.pv,
                    n = e.split('.')
                  return (
                    (n[0] = parseInt(n[0], 10)),
                    (n[1] = parseInt(n[1], 10) || 0),
                    (n[2] = parseInt(n[2], 10) || 0),
                    t[0] > n[0] ||
                      (t[0] == n[0] && t[1] > n[1]) ||
                      (t[0] == n[0] && t[1] == n[1] && t[2] >= n[2])
                  )
                }
                function b(e, t, n, r) {
                  if (!J.ie || !J.mac) {
                    const o = F.getElementsByTagName('head')[0]
                    if (o) {
                      const i = n && typeof n === 'string' ? n : 'screen'
                      if ((r && ((x = null), (C = null)), !x || C != i)) {
                        const a = y('style')
                        a.setAttribute('type', 'text/css'),
                          a.setAttribute('media', i),
                          (x = o.appendChild(a)),
                          J.ie &&
                            J.win &&
                            typeof F.styleSheets !== O &&
                            F.styleSheets.length > 0 &&
                            (x = F.styleSheets[F.styleSheets.length - 1]),
                          (C = i)
                      }
                      J.ie && J.win
                        ? x && typeof x.addRule === E && x.addRule(e, t)
                        : x &&
                          typeof F.createTextNode !== O &&
                          x.appendChild(F.createTextNode(`${e} {${t}}`))
                    }
                  }
                }
                function w(e, t) {
                  if (X) {
                    const n = t ? 'visible' : 'hidden'
                    H && h(e)
                      ? (h(e).style.visibility = n)
                      : b(`#${e}`, `visibility:${n}`)
                  }
                }
                function k(e) {
                  let t = /[\\\"<>\.;]/,
                    n = t.exec(e) != null
                  return n && typeof encodeURIComponent !== O
                    ? encodeURIComponent(e)
                    : e
                }
                var T,
                  S,
                  M,
                  _,
                  x,
                  C,
                  O = 'undefined',
                  E = 'object',
                  P = 'Shockwave Flash',
                  A = 'ShockwaveFlash.ShockwaveFlash',
                  I = 'application/x-shockwave-flash',
                  j = 'SWFObjectExprInst',
                  N = 'onreadystatechange',
                  D = window,
                  F = document,
                  R = navigator,
                  L = !1,
                  U = [r],
                  B = [],
                  q = [],
                  W = [],
                  H = !1,
                  $ = !1,
                  X = !0,
                  J = (function() {
                    let e =
                        typeof F.getElementById !== O &&
                        typeof F.getElementsByTagName !== O &&
                        typeof F.createElement !== O,
                      t = R.userAgent.toLowerCase(),
                      n = R.platform.toLowerCase(),
                      r = n ? /win/.test(n) : /win/.test(t),
                      o = n ? /mac/.test(n) : /mac/.test(t),
                      i =
                        !!/webkit/.test(t) &&
                        parseFloat(
                          t.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, '$1')
                        ),
                      a = !1,
                      s = [0, 0, 0],
                      c = null
                    if (typeof R.plugins !== O && typeof R.plugins[P] === E)
                      (c = R.plugins[P].description),
                        !c ||
                          (typeof R.mimeTypes !== O &&
                            R.mimeTypes[I] &&
                            !R.mimeTypes[I].enabledPlugin) ||
                          ((L = !0),
                          (a = !1),
                          (c = c.replace(/^.*\s+(\S+\s+\S+$)/, '$1')),
                          (s[0] = parseInt(c.replace(/^(.*)\..*$/, '$1'), 10)),
                          (s[1] = parseInt(
                            c.replace(/^.*\.(.*)\s.*$/, '$1'),
                            10
                          )),
                          (s[2] = /[a-zA-Z]/.test(c)
                            ? parseInt(c.replace(/^.*[a-zA-Z]+(.*)$/, '$1'), 10)
                            : 0))
                    else if (
                      typeof D[['Active'].concat('Object').join('X')] !== O
                    )
                      try {
                        const u = new window[
                          (['Active'].concat('Object').join('X'))
                        ](A)
                        u &&
                          ((c = u.GetVariable('$version')),
                          c &&
                            ((a = !0),
                            (c = c.split(' ')[1].split(',')),
                            (s = [
                              parseInt(c[0], 10),
                              parseInt(c[1], 10),
                              parseInt(c[2], 10),
                            ])))
                      } catch (l) {}
                    return { w3: e, pv: s, wk: i, ie: a, win: r, mac: o }
                  })()
                ;(function() {
                  J.w3 &&
                    (((typeof F.readyState !== O &&
                      F.readyState == 'complete') ||
                      (typeof F.readyState === O &&
                        (F.getElementsByTagName('body')[0] || F.body))) &&
                      e(),
                    H ||
                      (typeof F.addEventListener !== O &&
                        F.addEventListener('DOMContentLoaded', e, !1),
                      J.ie &&
                        J.win &&
                        (F.attachEvent(N, function() {
                          F.readyState == 'complete' &&
                            (F.detachEvent(N, arguments.callee), e())
                        }),
                        D == top &&
                          !(function() {
                            if (!H) {
                              try {
                                F.documentElement.doScroll('left')
                              } catch (t) {
                                return void setTimeout(arguments.callee, 0)
                              }
                              e()
                            }
                          })()),
                      J.wk &&
                        !(function() {
                          if (!H)
                            return /loaded|complete/.test(F.readyState)
                              ? void e()
                              : void setTimeout(arguments.callee, 0)
                        })(),
                      n(e)))
                })(),
                  (function() {
                    J.ie &&
                      J.win &&
                      window.attachEvent('onunload', () => {
                        for (let e = W.length, t = 0; t < e; t++)
                          W[t][0].detachEvent(W[t][1], W[t][2])
                        for (let n = q.length, r = 0; r < n; r++) d(q[r])
                        for (const o in J) J[o] = null
                        J = null
                        for (const i in swfobject) swfobject[i] = null
                        swfobject = null
                      })
                  })()
                return {
                  registerObject(e, t, n, r) {
                    if (J.w3 && e && t) {
                      const o = {}
                      ;(o.id = e),
                        (o.swfVersion = t),
                        (o.expressInstall = n),
                        (o.callbackFn = r),
                        (B[B.length] = o),
                        w(e, !1)
                    } else r && r({ success: !1, id: e })
                  },
                  getObjectById(e) {
                    if (J.w3) return a(e)
                  },
                  embedSWF(e, n, r, o, i, a, u, l, f, d) {
                    const m = { success: !1, id: n }
                    J.w3 && !(J.wk && J.wk < 312) && e && n && r && o && i
                      ? (w(n, !1),
                        t(() => {
                          ;(r += ''), (o += '')
                          const t = {}
                          if (f && typeof f === E)
                            for (const h in f) t[h] = f[h]
                          ;(t.data = e), (t.width = r), (t.height = o)
                          const y = {}
                          if (l && typeof l === E)
                            for (const g in l) y[g] = l[g]
                          if (u && typeof u === E)
                            for (const b in u)
                              typeof y.flashvars !== O
                                ? (y.flashvars += `&${b}=${u[b]}`)
                                : (y.flashvars = `${b}=${u[b]}`)
                          if (v(i)) {
                            const k = p(t, y, n)
                            t.id == n && w(n, !0), (m.success = !0), (m.ref = k)
                          } else {
                            if (a && s())
                              return (t.data = a), void c(t, y, n, d)
                            w(n, !0)
                          }
                          d && d(m)
                        }))
                      : d && d(m)
                  },
                  switchOffAutoHideShow() {
                    X = !1
                  },
                  ua: J,
                  getFlashPlayerVersion() {
                    return { major: J.pv[0], minor: J.pv[1], release: J.pv[2] }
                  },
                  hasFlashPlayerVersion: v,
                  createSWF(e, t, n) {
                    return J.w3 ? p(e, t, n) : void 0
                  },
                  showExpressInstall(e, t, n, r) {
                    J.w3 && s() && c(e, t, n, r)
                  },
                  removeSWF(e) {
                    J.w3 && d(e)
                  },
                  createCSS(e, t, n, r) {
                    J.w3 && b(e, t, n, r)
                  },
                  addDomLoadEvent: t,
                  addLoadEvent: n,
                  getQueryParamValue(e) {
                    let t = F.location.search || F.location.hash
                    if (t) {
                      if ((/\?/.test(t) && (t = t.split('?')[1]), e == null))
                        return k(t)
                      for (let n = t.split('&'), r = 0; r < n.length; r++)
                        if (n[r].substring(0, n[r].indexOf('=')) == e)
                          return k(n[r].substring(n[r].indexOf('=') + 1))
                    }
                    return ''
                  },
                  expressInstallCallback() {
                    if ($) {
                      const e = h(j)
                      e &&
                        T &&
                        (e.parentNode.replaceChild(T, e),
                        S &&
                          (w(S, !0),
                          J.ie && J.win && (T.style.display = 'block')),
                        M && M(_)),
                        ($ = !1)
                    }
                  },
                }
              })()
            !(function() {
              if (typeof window !== 'undefined' && !window.WebSocket) {
                let e = window.console
                if (
                  ((e && e.log && e.error) || (e = { log() {}, error() {} }),
                  !swfobject.hasFlashPlayerVersion('10.0.0'))
                )
                  return void e.error('Flash Player >= 10.0.0 is required.')
                location.protocol == 'file:' &&
                  e.error(
                    "WARNING: web-socket-js doesn't work in file:///... URL unless you set Flash Security Settings properly. Open the page via Web server i.e. http://..."
                  ),
                  (WebSocket = function(e, t, n, r, o) {
                    const i = this
                    ;(i.__id = WebSocket.__nextId++),
                      (WebSocket.__instances[i.__id] = i),
                      (i.readyState = WebSocket.CONNECTING),
                      (i.bufferedAmount = 0),
                      (i.__events = {}),
                      t ? typeof t === 'string' && (t = [t]) : (t = []),
                      setTimeout(() => {
                        WebSocket.__addTask(() => {
                          WebSocket.__flash.create(
                            i.__id,
                            e,
                            t,
                            n || null,
                            r || 0,
                            o || null
                          )
                        })
                      }, 0)
                  }),
                  (WebSocket.prototype.send = function(e) {
                    if (this.readyState == WebSocket.CONNECTING)
                      throw 'INVALID_STATE_ERR: Web Socket connection has not been established'
                    const t = WebSocket.__flash.send(
                      this.__id,
                      encodeURIComponent(e)
                    )
                    return t < 0 || ((this.bufferedAmount += t), !1)
                  }),
                  (WebSocket.prototype.close = function() {
                    this.readyState != WebSocket.CLOSED &&
                      this.readyState != WebSocket.CLOSING &&
                      ((this.readyState = WebSocket.CLOSING),
                      WebSocket.__flash.close(this.__id))
                  }),
                  (WebSocket.prototype.addEventListener = function(e, t, n) {
                    e in this.__events || (this.__events[e] = []),
                      this.__events[e].push(t)
                  }),
                  (WebSocket.prototype.removeEventListener = function(e, t, n) {
                    if (e in this.__events)
                      for (
                        let r = this.__events[e], o = r.length - 1;
                        o >= 0;
                        --o
                      )
                        if (r[o] === t) {
                          r.splice(o, 1)
                          break
                        }
                  }),
                  (WebSocket.prototype.dispatchEvent = function(e) {
                    for (
                      let t = this.__events[e.type] || [], n = 0;
                      n < t.length;
                      ++n
                    )
                      t[n](e)
                    const r = this[`on${e.type}`]
                    r && r(e)
                  }),
                  (WebSocket.prototype.__handleEvent = function(e) {
                    'readyState' in e && (this.readyState = e.readyState),
                      'protocol' in e && (this.protocol = e.protocol)
                    let t
                    if (e.type == 'open' || e.type == 'error')
                      t = this.__createSimpleEvent(e.type)
                    else if (e.type == 'close')
                      t = this.__createSimpleEvent('close')
                    else {
                      if (e.type != 'message')
                        throw `unknown event type: ${e.type}`
                      const n = decodeURIComponent(e.message)
                      t = this.__createMessageEvent('message', n)
                    }
                    this.dispatchEvent(t)
                  }),
                  (WebSocket.prototype.__createSimpleEvent = function(e) {
                    if (document.createEvent && window.Event) {
                      const t = document.createEvent('Event')
                      return t.initEvent(e, !1, !1), t
                    }
                    return { type: e, bubbles: !1, cancelable: !1 }
                  }),
                  (WebSocket.prototype.__createMessageEvent = function(e, t) {
                    if (
                      document.createEvent &&
                      window.MessageEvent &&
                      !window.opera
                    ) {
                      const n = document.createEvent('MessageEvent')
                      return (
                        n.initMessageEvent(
                          'message',
                          !1,
                          !1,
                          t,
                          null,
                          null,
                          window,
                          null
                        ),
                        n
                      )
                    }
                    return { type: e, data: t, bubbles: !1, cancelable: !1 }
                  }),
                  (WebSocket.CONNECTING = 0),
                  (WebSocket.OPEN = 1),
                  (WebSocket.CLOSING = 2),
                  (WebSocket.CLOSED = 3),
                  (WebSocket.__flash = null),
                  (WebSocket.__instances = {}),
                  (WebSocket.__tasks = []),
                  (WebSocket.__nextId = 0),
                  (WebSocket.loadFlashPolicyFile = function(e) {
                    WebSocket.__addTask(() => {
                      WebSocket.__flash.loadManualPolicyFile(e)
                    })
                  }),
                  (WebSocket.__initialize = function() {
                    if (!WebSocket.__flash) {
                      if (
                        (WebSocket.__swfLocation &&
                          (window.WEB_SOCKET_SWF_LOCATION =
                            WebSocket.__swfLocation),
                        !window.WEB_SOCKET_SWF_LOCATION)
                      )
                        return void e.error(
                          '[WebSocket] set WEB_SOCKET_SWF_LOCATION to location of WebSocketMain.swf'
                        )
                      const t = document.createElement('div')
                      ;(t.id = 'webSocketContainer'),
                        (t.style.position = 'absolute'),
                        WebSocket.__isFlashLite()
                          ? ((t.style.left = '0px'), (t.style.top = '0px'))
                          : ((t.style.left = '-100px'),
                            (t.style.top = '-100px'))
                      const n = document.createElement('div')
                      ;(n.id = 'webSocketFlash'),
                        t.appendChild(n),
                        document.body.appendChild(t),
                        swfobject.embedSWF(
                          WEB_SOCKET_SWF_LOCATION,
                          'webSocketFlash',
                          '1',
                          '1',
                          '10.0.0',
                          null,
                          null,
                          {
                            hasPriority: !0,
                            swliveconnect: !0,
                            allowScriptAccess: 'always',
                          },
                          null,
                          t => {
                            t.success ||
                              e.error('[WebSocket] swfobject.embedSWF failed')
                          }
                        )
                    }
                  }),
                  (WebSocket.__onFlashInitialized = function() {
                    setTimeout(() => {
                      ;(WebSocket.__flash = document.getElementById(
                        'webSocketFlash'
                      )),
                        WebSocket.__flash.setCallerUrl(location.href),
                        WebSocket.__flash.setDebug(!!window.WEB_SOCKET_DEBUG)
                      for (let e = 0; e < WebSocket.__tasks.length; ++e)
                        WebSocket.__tasks[e]()
                      WebSocket.__tasks = []
                    }, 0)
                  }),
                  (WebSocket.__onFlashEvent = function() {
                    return (
                      setTimeout(() => {
                        try {
                          for (
                            let t = WebSocket.__flash.receiveEvents(), n = 0;
                            n < t.length;
                            ++n
                          )
                            WebSocket.__instances[
                              t[n].webSocketId
                            ].__handleEvent(t[n])
                        } catch (r) {
                          e.error(r)
                        }
                      }, 0),
                      !0
                    )
                  })
                const t = function() {
                  let e = function(e, t) {
                      t = t || 2
                      for (var n = `${e}`; n.length < t; ) n = `0${n}`
                      return n
                    },
                    t = new Date(),
                    n = `${t.getFullYear()}-${e(t.getMonth() + 1)}-${e(
                      t.getDate()
                    )} ${e(t.getHours())}:${e(t.getMinutes())}:${e(
                      t.getSeconds()
                    )}:${e(t.getMilliseconds(), 3)}`
                  return n
                }
                ;(WebSocket.__log = function(n) {
                  e.log(t(), decodeURIComponent(n))
                }),
                  (WebSocket.__error = function(n) {
                    e.error(t(), decodeURIComponent(n))
                  }),
                  (WebSocket.__addTask = function(e) {
                    WebSocket.__flash ? e() : WebSocket.__tasks.push(e)
                  }),
                  (WebSocket.__isFlashLite = function() {
                    if (!window.navigator || !window.navigator.mimeTypes)
                      return !1
                    const e =
                      window.navigator.mimeTypes[
                        'application/x-shockwave-flash'
                      ]
                    return (
                      !!(e && e.enabledPlugin && e.enabledPlugin.filename) &&
                      !!e.enabledPlugin.filename.match(/flashlite/i)
                    )
                  }),
                  window.WEB_SOCKET_DISABLE_AUTO_INITIALIZATION ||
                    (window.addEventListener
                      ? window.addEventListener(
                          'load',
                          () => {
                            WebSocket.__initialize()
                          },
                          !1
                        )
                      : window.attachEvent('onload', () => {
                          WebSocket.__initialize()
                        }))
              }
            })(),
              (function(e, t, n) {
                function r(e) {
                  e &&
                    (t.Transport.apply(this, arguments), (this.sendBuffer = []))
                }
                function o() {}
                ;(e.XHR = r),
                  t.util.inherit(r, t.Transport),
                  (r.prototype.open = function() {
                    return (
                      this.socket.setBuffer(!1),
                      this.onOpen(),
                      this.get(),
                      this.setCloseTimeout(),
                      this
                    )
                  }),
                  (r.prototype.payload = function(e) {
                    for (var n = [], r = 0, o = e.length; r < o; r++)
                      n.push(t.parser.encodePacket(e[r]))
                    this.send(t.parser.encodePayload(n))
                  }),
                  (r.prototype.send = function(e) {
                    return this.post(e), this
                  }),
                  (r.prototype.post = function(e) {
                    function t() {
                      this.readyState == 4 &&
                        ((this.onreadystatechange = o),
                        (i.posting = !1),
                        this.status == 200
                          ? i.socket.setBuffer(!1)
                          : i.onClose())
                    }
                    function r() {
                      ;(this.onload = o), i.socket.setBuffer(!1)
                    }
                    var i = this
                    this.socket.setBuffer(!0),
                      (this.sendXHR = this.request('POST')),
                      n.XDomainRequest && this.sendXHR instanceof XDomainRequest
                        ? (this.sendXHR.onload = this.sendXHR.onerror = r)
                        : (this.sendXHR.onreadystatechange = t),
                      this.sendXHR.send(e)
                  }),
                  (r.prototype.close = function() {
                    return this.onClose(), this
                  }),
                  (r.prototype.request = function(e) {
                    let n = t.util.request(this.socket.isXDomain()),
                      r = t.util.query(
                        this.socket.options.query,
                        `t=${+new Date()}`
                      )
                    if (
                      (n.open(e || 'GET', this.prepareUrl() + r, !0),
                      e == 'POST')
                    )
                      try {
                        n.setRequestHeader
                          ? n.setRequestHeader(
                              'Content-type',
                              'text/plain;charset=UTF-8'
                            )
                          : (n.contentType = 'text/plain')
                      } catch (o) {}
                    return n
                  }),
                  (r.prototype.scheme = function() {
                    return this.socket.options.secure ? 'https' : 'http'
                  }),
                  (r.check = function(e, r) {
                    try {
                      let o = t.util.request(r),
                        i = n.XDomainRequest && o instanceof XDomainRequest,
                        a =
                          e && e.options && e.options.secure
                            ? 'https:'
                            : 'http:',
                        s =
                          n.location &&
                          a != n &&
                          n.location &&
                          n.location.protocol
                      if (o && (!i || !s)) return !0
                    } catch (c) {}
                    return !1
                  }),
                  (r.xdomainCheck = function(e) {
                    return r.check(e, !0)
                  })
              })(
                typeof io !== 'undefined' ? io.Transport : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports,
                window
              ),
              (function(e, t) {
                function n(e) {
                  t.Transport.XHR.apply(this, arguments)
                }
                ;(e.htmlfile = n),
                  t.util.inherit(n, t.Transport.XHR),
                  (n.prototype.name = 'htmlfile'),
                  (n.prototype.get = function() {
                    ;(this.doc = new window[
                      (['Active'].concat('Object').join('X'))
                    ]('htmlfile')),
                      this.doc.open(),
                      this.doc.write('<html></html>'),
                      this.doc.close(),
                      (this.doc.parentWindow.s = this)
                    const e = this.doc.createElement('div')
                    ;(e.className = 'socketio'),
                      this.doc.body.appendChild(e),
                      (this.iframe = this.doc.createElement('iframe')),
                      e.appendChild(this.iframe)
                    let n = this,
                      r = t.util.query(
                        this.socket.options.query,
                        `t=${+new Date()}`
                      )
                    ;(this.iframe.src = this.prepareUrl() + r),
                      t.util.on(window, 'unload', () => {
                        n.destroy()
                      })
                  }),
                  (n.prototype._ = function(e, t) {
                    this.onData(e)
                    try {
                      const n = t.getElementsByTagName('script')[0]
                      n.parentNode.removeChild(n)
                    } catch (r) {}
                  }),
                  (n.prototype.destroy = function() {
                    if (this.iframe) {
                      try {
                        this.iframe.src = 'about:blank'
                      } catch (e) {}
                      ;(this.doc = null),
                        this.iframe.parentNode.removeChild(this.iframe),
                        (this.iframe = null),
                        CollectGarbage()
                    }
                  }),
                  (n.prototype.close = function() {
                    return (
                      this.destroy(), t.Transport.XHR.prototype.close.call(this)
                    )
                  }),
                  (n.check = function(e) {
                    if (
                      typeof window !== 'undefined' &&
                      ['Active'].concat('Object').join('X') in window
                    )
                      try {
                        const n = new window[
                          (['Active'].concat('Object').join('X'))
                        ]('htmlfile')
                        return n && t.Transport.XHR.check(e)
                      } catch (r) {}
                    return !1
                  }),
                  (n.xdomainCheck = function() {
                    return !1
                  }),
                  t.transports.push('htmlfile')
              })(
                typeof io !== 'undefined' ? io.Transport : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports
              ),
              (function(e, t, n) {
                function r() {
                  t.Transport.XHR.apply(this, arguments)
                }
                function o() {}
                ;(e['xhr-polling'] = r),
                  t.util.inherit(r, t.Transport.XHR),
                  t.util.merge(r, t.Transport.XHR),
                  (r.prototype.name = 'xhr-polling'),
                  (r.prototype.heartbeats = function() {
                    return !1
                  }),
                  (r.prototype.open = function() {
                    const e = this
                    return t.Transport.XHR.prototype.open.call(e), !1
                  }),
                  (r.prototype.get = function() {
                    function e() {
                      this.readyState == 4 &&
                        ((this.onreadystatechange = o),
                        this.status == 200
                          ? (i.onData(this.responseText), i.get())
                          : i.onClose())
                    }
                    function t() {
                      ;(this.onload = o),
                        (this.onerror = o),
                        (i.retryCounter = 1),
                        i.onData(this.responseText),
                        i.get()
                    }
                    function r() {
                      i.retryCounter++,
                        !i.retryCounter || i.retryCounter > 3
                          ? i.onClose()
                          : i.get()
                    }
                    if (this.isOpen) {
                      var i = this
                      ;(this.xhr = this.request()),
                        n.XDomainRequest && this.xhr instanceof XDomainRequest
                          ? ((this.xhr.onload = t), (this.xhr.onerror = r))
                          : (this.xhr.onreadystatechange = e),
                        this.xhr.send(null)
                    }
                  }),
                  (r.prototype.onClose = function() {
                    if (
                      (t.Transport.XHR.prototype.onClose.call(this), this.xhr)
                    ) {
                      this.xhr.onreadystatechange = this.xhr.onload = this.xhr.onerror = o
                      try {
                        this.xhr.abort()
                      } catch (e) {}
                      this.xhr = null
                    }
                  }),
                  (r.prototype.ready = function(e, n) {
                    const r = this
                    t.util.defer(() => {
                      n.call(r)
                    })
                  }),
                  t.transports.push('xhr-polling')
              })(
                typeof io !== 'undefined' ? io.Transport : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports,
                window
              ),
              (function(e, t, n) {
                function r(e) {
                  t.Transport['xhr-polling'].apply(this, arguments),
                    (this.index = t.j.length)
                  const n = this
                  t.j.push(e => {
                    n._(e)
                  })
                }
                const o =
                  n.document &&
                  'MozAppearance' in n.document.documentElement.style
                ;(e['jsonp-polling'] = r),
                  t.util.inherit(r, t.Transport['xhr-polling']),
                  (r.prototype.name = 'jsonp-polling'),
                  (r.prototype.post = function(e) {
                    function n() {
                      r(), o.socket.setBuffer(!1)
                    }
                    function r() {
                      o.iframe && o.form.removeChild(o.iframe)
                      try {
                        a = document.createElement(
                          `<iframe name="${o.iframeId}">`
                        )
                      } catch (e) {
                        ;(a = document.createElement('iframe')),
                          (a.name = o.iframeId)
                      }
                      ;(a.id = o.iframeId),
                        o.form.appendChild(a),
                        (o.iframe = a)
                    }
                    var o = this,
                      i = t.util.query(
                        this.socket.options.query,
                        `t=${+new Date()}&i=${this.index}`
                      )
                    if (!this.form) {
                      var a,
                        s = document.createElement('form'),
                        c = document.createElement('textarea'),
                        u = (this.iframeId = `socketio_iframe_${this.index}`)
                      ;(s.className = 'socketio'),
                        (s.style.position = 'absolute'),
                        (s.style.top = '0px'),
                        (s.style.left = '0px'),
                        (s.style.display = 'none'),
                        (s.target = u),
                        (s.method = 'POST'),
                        s.setAttribute('accept-charset', 'utf-8'),
                        (c.name = 'd'),
                        s.appendChild(c),
                        document.body.appendChild(s),
                        (this.form = s),
                        (this.area = c)
                    }
                    ;(this.form.action = this.prepareUrl() + i),
                      r(),
                      (this.area.value = t.JSON.stringify(e))
                    try {
                      this.form.submit()
                    } catch (l) {}
                    this.iframe.attachEvent
                      ? (a.onreadystatechange = function() {
                          o.iframe.readyState == 'complete' && n()
                        })
                      : (this.iframe.onload = n),
                      this.socket.setBuffer(!0)
                  }),
                  (r.prototype.get = function() {
                    let e = this,
                      n = document.createElement('script'),
                      r = t.util.query(
                        this.socket.options.query,
                        `t=${+new Date()}&i=${this.index}`
                      )
                    this.script &&
                      (this.script.parentNode.removeChild(this.script),
                      (this.script = null)),
                      (n.async = !0),
                      (n.src = this.prepareUrl() + r),
                      (n.onerror = function() {
                        e.onClose()
                      })
                    const i = document.getElementsByTagName('script')[0]
                    i.parentNode.insertBefore(n, i),
                      (this.script = n),
                      o &&
                        setTimeout(() => {
                          const e = document.createElement('iframe')
                          document.body.appendChild(e),
                            document.body.removeChild(e)
                        }, 100)
                  }),
                  (r.prototype._ = function(e) {
                    return this.onData(e), this.isOpen && this.get(), this
                  }),
                  (r.prototype.ready = function(e, n) {
                    const r = this
                    return o
                      ? void t.util.load(() => {
                          n.call(r)
                        })
                      : n.call(this)
                  }),
                  (r.check = function() {
                    return 'document' in n
                  }),
                  (r.xdomainCheck = function() {
                    return !0
                  }),
                  t.transports.push('jsonp-polling')
              })(
                typeof io !== 'undefined' ? io.Transport : module.exports,
                typeof io !== 'undefined' ? io : module.parent.exports,
                window
              ),
              (__WEBPACK_AMD_DEFINE_ARRAY__ = []),
              (__WEBPACK_AMD_DEFINE_RESULT__ = function() {
                return io
              }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)),
              !(
                void 0 !== __WEBPACK_AMD_DEFINE_RESULT__ &&
                (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)
              )
          })()
      }.call(exports, __webpack_require__(16)(module)))
    },
    function(e, t, n) {
      function r(e) {
        return e && e.__esModule ? e : { default: e }
      }
      function o() {}
      let i = n(15),
        a = r(i),
        s = a.default.clientTypeMap
      ;(o.reverse = function(e) {
        const t = e
        return (t.type = s[t.type]), t
      }),
        (o.reverseType = function(e) {
          return s[e] || e
        }),
        (e.exports = o)
    },
    ,
    ,
    ,
    function(e, t, n) {
      function r(e) {
        const t = this
        i.verifyOptions(e, 'appKey account chatroomId chatroomAddresses'),
          e.isAnonymous || i.verifyOptions(e, 'token'),
          i.verifyParamType('chatroomAddresses', e.chatroomAddresses, 'array'),
          i.verifyCallback(
            e,
            'onconnect onerror onwillreconnect ondisconnect onmsg onmsgs onrobots'
          ),
          o.call(t, e)
      }
      var o = n(17),
        i = n(1),
        a = i.undef,
        s = i.notundef,
        c = n(3),
        u = n(22).getInstance('Chatroom'),
        l = n(76),
        p = n(60),
        f = o.fn,
        d = (r.fn = r.prototype = Object.create(f))
      ;(d.init = function() {
        const e = this
        f.init.call(e),
          (e.parser = u),
          (e.syncResult = {}),
          (e.timetags = {}),
          (e.msgBuffer = [])
      }),
        (d.reset = function() {
          const e = this
          f.reset.call(e)
          const t = e.options
          a(t.msgBufferInterval) && (t.msgBufferInterval = 300),
            i.verifyParamType(
              'msgBufferInterval',
              t.msgBufferInterval,
              'number'
            ),
            a(t.msgBufferSize) && (t.msgBufferSize = 500),
            i.verifyParamType('msgBufferSize', t.msgBufferSize, 'number'),
            s(t.chatroomAddresses) &&
              ((e.socketUrls = t.chatroomAddresses.map(t => {
                return c.formatSocketUrl({ url: t, secure: e.options.secure })
              })),
              (e.socketUrlsBackup = e.socketUrls.slice(0)))
        }),
        (d.processChatroom = function(e) {
          const t = this
          switch (e.cmd) {
            case 'login':
              e.error ||
                (e.obj = {
                  chatroom: l.reverse(e.content.chatroom),
                  member: p.reverse(e.content.chatroomMember),
                })
              break
            case 'kicked':
              t.onKicked(e)
              break
            case 'logout':
              break
            case 'sendMsg':
              t.onSendMsg(e)
              break
            case 'msg':
              t.onMsg(e)
              break
            case 'getChatroomMembers':
              t.onChatroomMembers(e)
              break
            case 'getHistoryMsgs':
              t.onHistoryMsgs(e)
              break
            case 'markChatroomMember':
              t.onMarkChatroomMember(e)
              break
            case 'closeChatroom':
              break
            case 'getChatroom':
              t.onChatroom(e)
              break
            case 'updateChatroom':
              break
            case 'updateMyChatroomMemberInfo':
              delete e.obj.chatroomMember
              break
            case 'getChatroomMembersInfo':
              t.onChatroomMembersInfo(e)
              break
            case 'kickChatroomMember':
              break
            case 'updateChatroomMemberTempMute':
              break
            case 'queueList':
              e.error || (e.obj = e.content)
              break
            case 'syncRobot':
              t.onSyncRobot(e)
          }
        }),
        (d.onChatroom = function(e) {
          e.error || (e.obj.chatroom = l.reverse(e.content.chatroom))
        }),
        (e.exports = r),
        n(173),
        n(172),
        n(175),
        n(174)
    },
    ,
    function(e, t, n) {
      function r(e) {
        let t = e.mode,
          n = d,
          r = f.getGlobal()
        return (
          r.FormData || (t = 'iframe'),
          t === 'iframe' && (n = e.upload ? m : h),
          new n(e)
        )
      }
      function o(e) {
        let t = (e.upload =
            (e.headers || f.o)['Content-Type'] === 'multipart/form-data'),
          n = !1
        try {
          let o = `${location.protocol}//${location.host}`.toLowerCase(),
            i = f.url2origin(e.url)
          n = o !== i
        } catch (a) {}
        return (e.cors = n), t || n || e.mode ? r(e) : new d(e)
      }
      function i(e) {
        const t = y[e]
        t && (t.req.destroy(), delete y[e])
      }
      function a(e, t) {
        t = { data: t }
        const n = e.result.headers
        return n && (t.headers = e.req.header(n)), t
      }
      function s(e, t, n) {
        const r = y[e]
        if (r) {
          t === 'onload' && r.result && (n = a(r, n)), i(e)
          const o = { type: t, result: n }
          g(o), o.stopped || r[t](o.result)
        }
      }
      function c(e, t) {
        s(e, 'onload', t)
      }
      function u(e, t) {
        s(e, 'onerror', t)
      }
      function l(e, t) {
        const n = f.genUrlSep(e)
        return (
          (t = t || ''),
          f.isObject(t) && (t = f.object2query(t)),
          t && (e += n + t),
          e
        )
      }
      function p(e, t) {
        t = t || {}
        let n = f.uniqueID(),
          r = {
            result: t.result,
            onload: t.onload || f.f,
            onerror: t.onerror || f.f,
          }
        ;(y[n] = r),
          (t.onload = c.bind(null, n)),
          (t.onerror = u.bind(null, n)),
          t.query && (e = l(e, t.query))
        const i = t.method || ''
        return (
          (i && !/get/i.test(i)) ||
            !t.data ||
            ((e = l(e, t.data)), (t.data = null)),
          (t.url = e),
          (r.req = o(t)),
          n
        )
      }
      var f = n(10),
        d = n(93),
        m = n(92),
        h = n(91),
        y = {},
        g = f.f
      ;(p.filter = function(e) {
        f.isFunction(e) && (g = e)
      }),
        (p.abort = function(e) {
          const t = y[e]
          t && t.req.abort()
        }),
        (e.exports = p)
    },
    function(e, t, n) {
      function r(e) {
        const t = this
        e.onload && t.once('load', e.onload),
          e.onerror && t.once('error', e.onerror),
          e.onbeforesend && t.once('beforesend', e.onbeforesend),
          e.onaftersend && t.once('aftersend', e.onaftersend),
          (e = t.options = o.fetch(
            {
              method: 'GET',
              url: '',
              sync: !1,
              data: null,
              headers: {},
              cookie: !1,
              timeout: 6e4,
              type: 'text',
              form: null,
              input: null,
              putFileAtEnd: !1,
              proxyUrl: '',
            },
            e
          ))
        let n = e.headers,
          r = 'Content-Type'
        o.notexist(n[r]) && (n[r] = 'application/x-www-form-urlencoded'),
          t.send()
      }
      var o = n(10),
        i = o.f,
        a = n(107),
        s = (r.prototype = Object.create(a.prototype))
      ;(s.send = function() {
        let e = this,
          t = e.options
        setTimeout(() => {
          try {
            try {
              e.emit('beforesend', t)
            } catch (n) {
              console.error('ignore error ajax beforesend,', n)
            }
            e.doSend()
          } catch (n) {
            console.error('ignore error server error,', n),
              e.onError('serverError', `请求失败:${n.message}`)
          }
        }, 0)
      }),
        (s.doSend = i),
        (s.afterSend = function() {
          const e = this
          setTimeout(() => {
            e.emit('aftersend', e.options)
          }, 0)
        }),
        (s.onLoad = function(e) {
          let t = this,
            n = t.options,
            r = e.status,
            o = e.result
          if (`${r}`.indexOf('2') !== 0)
            return void t.onError('serverError', '服务器返回异常状态', {
              status: r,
              result: o,
            })
          if (n.type === 'json')
            try {
              o = JSON.parse(o)
            } catch (i) {
              return (
                console.error('ignore error parse json,', i),
                void t.onError('parseError', o)
              )
            }
          t.emit('load', o)
        }),
        (s.onError = function(e, t, n) {
          const r = o.isObject(n) ? n : {}
          ;(r.code = e || 'error'),
            (r.message = t || '发生错误'),
            this.emit('error', r)
        }),
        (s.onTimeout = function() {
          this.onError('timeout', '请求超时')
        }),
        (s.abort = function() {
          this.onError('abort', '客户端中止')
        }),
        (s.header = function(e) {
          const t = this
          if (!o.isArray(e)) return t.getResponseHeader(e || '')
          const n = {}
          return (
            e.forEach(e => {
              n[e] = t.header(e)
            }),
            n
          )
        }),
        (s.getResponseHeader = i),
        (s.destroy = i),
        (e.exports = r)
    },
    function(e, t) {
      function n(e, t) {
        for (let n = t.split('.'); n.length; ) {
          let r = n.shift(),
            o = !1
          if (
            (r[r.length - 1] == '?' && ((r = r.slice(0, -1)), (o = !0)),
            (e = e[r]),
            !e && o)
          )
            return e
        }
        return e
      }
      e.exports = n
    },
    function(e, t, n) {
      function r(e) {
        const t = this
        return (
          (t.subType = 'chatroom'),
          (e.Protocol = i),
          (e.Message = c),
          (e.constructor = r),
          e.isAnonymous &&
            ((e.account = e.account || `nimanon_${u.guid()}`),
            (e.isAnonymous = 1),
            u.verifyOptions(e, 'chatroomNick'),
            (e.chatroomAvatar = e.chatroomAvatar || ' ')),
          t.init(e)
        )
      }
      var o = n(14),
        i = n(33),
        a = n(3),
        s = n(76),
        c = n(153),
        u = n(1),
        l = u.verifyOptions,
        p = u.verifyParamType,
        f = n(22).getInstance('Chatroom')
      ;(r.Protocol = i),
        (r.parser = f),
        (r.use = o.use),
        (r.getInstance = function(e) {
          return (
            e.isAnonymous &&
              ((e.account = e.account || `nimanon_${u.guid()}`),
              (e.isAnonymous = 1),
              u.verifyOptions(e, 'chatroomNick'),
              (e.chatroomAvatar = e.chatroomAvatar || ' ')),
            o.getInstance.call(this, e)
          )
        }),
        (r.genInstanceName = function(e) {
          return (
            u.verifyOptions(e, 'chatroomId'),
            `Chatroom-account-${e.account}-chatroomId-${e.chatroomId}`
          )
        })
      const d = (r.fn = r.prototype = Object.create(o.prototype))
      ;(r.info = d.info = a.info),
        (d.getChatroom = function(e) {
          const t = this
          t.processCallback(e), t.sendCmd('getChatroom', e)
        }),
        (d.updateChatroom = function(e) {
          l(e, 'chatroom needNotify'),
            p('needNotify', e.needNotify, 'boolean'),
            this.processCustom(e),
            this.processCallback(e),
            (e.chatroom = new s(e.chatroom)),
            this.sendCmd('updateChatroom', e)
        }),
        (d.closeChatroom = function(e) {
          const t = this
          t.processCustom(e),
            t.processCallback(e),
            t.sendCmd('closeChatroom', e)
        }),
        (e.exports = r),
        n(118),
        n(117),
        n(119)
    },
    function(e, t, n) {
      function r(e) {
        switch ((a.notundef(e.type)
          ? a.verifyFileType(e.type)
          : (e.type = 'file'),
        a.verifyOptions(e, 'file'),
        a.verifyOptions(e.file, 'url ext size md5', !0, 'file.'),
        e.type)) {
          case 'image':
            c.verifyFile(e.file)
            break
          case 'audio':
            u.verifyFile(e.file)
            break
          case 'video':
            l.verifyFile(e.file)
        }
        i.call(this, e), (this.attach = JSON.stringify(e.file))
      }
      var o = n(50),
        i = n(18),
        a = n(1),
        s = n(3)
      ;(r.prototype = Object.create(i.prototype)),
        (r.reverse = function(e) {
          const t = i.reverse(e)
          ;(e.attach = e.attach ? `${e.attach}` : ''),
            (t.file = e.attach ? JSON.parse(e.attach) : {}),
            t.type === 'audio' &&
              (t.file.mp3Url = `${t.file.url}?audioTrans&type=mp3`)
          let n = t.file.url,
            r = (0, o.url2object)(n),
            a = r.hostname,
            c = s.downloadHost
          if (a === c) {
            let u = r.path,
              l = u.indexOf('/')
            if (l !== -1) {
              let p = u.substring(0, l),
                f = u.substring(l + 1)
              t.file.url = (0, o.object2url)({
                protocol: r.protocol,
                hostname: `${p}.nosdn.127.net`,
                path: f,
                query: r.query,
              })
            }
          } else
            a.indexOf(c) !== -1 && (t.file.url = n.replace(c, 'nosdn.127.net'))
          return (
            e.enabledHttpsForMessage &&
              (t.file.url = n.replace('http', 'https')),
            t
          )
        }),
        (e.exports = r)
      var c = n(152),
        u = n(149),
        l = n(158)
    },
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    function(e, t) {
      ;(t.__esModule = !0),
        (t.default = {
          genUrlSep(e) {
            e = `${e}`
            const t = e.indexOf('?') === -1 ? '?imageView&' : '&'
            return t
          },
          url2object(e) {
            e = e || ''
            let t = e.indexOf('https') >= 0 ? 'https://' : 'http://',
              n = e.replace(t, '')
            n.indexOf('?') >= 0 && (n = n.substring(0, n.indexOf('?')))
            const r = n.split('/')
            n = r[0]
            let o = ''
            if (
              (r.length > 0 && (o = r.slice(1).join('/')),
              e.indexOf('?') === -1)
            )
              return { protocol: t, hostname: n, path: o, query: {} }
            let i = e.substr(e.indexOf('?') + 1),
              a = i.split('&'),
              s = {}
            return (
              a.forEach(e => {
                if (e.indexOf('=') > 0) {
                  const t = e.split('=')
                  s[t[0]] = decodeURIComponent(t[1])
                } else s[e] = ''
              }),
              { protocol: t, hostname: n, path: o, query: s }
            )
          },
          object2url(e) {
            let t = e.protocol,
              n = e.hostname,
              r = e.path,
              o = e.query
            ;(t = t || 'http://'),
              (n = n || ''),
              r && (n = `${n}/${r}`),
              (o = o || {})
            const i = []
            for (const a in o)
              a !== 'imageView' && i.push(`${a}=${encodeURIComponent(o[a])}`)
            return i.length > 0
              ? `${t}${n}?imageView&${i.join('&')}`
              : `${t}${n}`
          },
        }),
        (e.exports = t.default)
    },
    function(e, t, n) {
      function r(e) {
        o.verifyOptions(e, 'type'),
          o.verifyParamValid('type', e.type, r.validTypes),
          o.merge(this, e),
          (this.type = i[e.type])
      }
      var o = n(1),
        i = {
          stripmeta: 0,
          blur: 2,
          quality: 3,
          crop: 4,
          rotate: 5,
          thumbnail: 7,
          interlace: 9,
        },
        a = {
          0: 'stripmeta',
          1: 'type',
          2: 'blur',
          3: 'quality',
          4: 'crop',
          5: 'rotate',
          6: 'pixel',
          7: 'thumbnail',
          8: 'watermark',
          9: 'interlace',
          10: 'tmp',
        }
      ;(r.validTypes = Object.keys(i)),
        (r.reverse = function(e) {
          const t = o.copy(e)
          return (t.type = a[t.type]), t
        }),
        (r.reverseImageOps = function(e) {
          return e.map(e => {
            return r.reverse(e)
          })
        }),
        (e.exports = r)
    },
    function(e, t) {
      let n = {
          link: { id: 1, heartbeat: 2 },
          misc: {
            id: 6,
            getSimpleNosToken: 1,
            getNosToken: 2,
            notifyUploadLog: 3,
            uploadSdkLogUrl: 4,
            audioToText: 5,
            processImage: 6,
          },
        },
        r = {
          heartbeat: { sid: n.link.id, cid: n.link.heartbeat },
          getSimpleNosToken: {
            sid: n.misc.id,
            cid: n.misc.getSimpleNosToken,
            params: [{ type: 'int', name: 'num' }],
          },
          getNosToken: {
            sid: n.misc.id,
            cid: n.misc.getNosToken,
            params: [{ type: 'String', name: 'responseBody' }],
          },
          uploadSdkLogUrl: {
            sid: n.misc.id,
            cid: n.misc.uploadSdkLogUrl,
            params: [{ type: 'string', name: 'url' }],
          },
          audioToText: {
            sid: n.misc.id,
            cid: n.misc.audioToText,
            params: [{ type: 'Property', name: 'audioToText' }],
          },
          processImage: {
            sid: n.misc.id,
            cid: n.misc.processImage,
            params: [
              { type: 'String', name: 'url' },
              { type: 'PropertyArray', name: 'imageOps', entity: 'imageOp' },
            ],
          },
        },
        o = {
          '1_2': { service: 'link', cmd: 'heartbeat' },
          '6_1': {
            service: 'misc',
            cmd: 'getSimpleNosToken',
            response: [
              { type: 'PropertyArray', name: 'nosTokens', entity: 'nosToken' },
            ],
          },
          '6_2': {
            service: 'misc',
            cmd: 'getNosToken',
            response: [{ type: 'Property', name: 'nosToken' }],
          },
          '6_3': { service: 'misc', cmd: 'notifyUploadLog' },
          '6_5': {
            service: 'misc',
            cmd: 'audioToText',
            response: [{ type: 'String', name: 'text' }],
          },
          '6_6': {
            service: 'misc',
            cmd: 'processImage',
            response: [{ type: 'String', name: 'url' }],
          },
        }
      e.exports = { idMap: n, cmdConfig: r, packetConfig: o }
    },
    function(e, t, n) {
      let r = n(10),
        o = r.getGlobal(),
        i = {},
        a = o.name || '_parent',
        s = [],
        c = 'MSG|',
        u = []
      i.addMsgListener = function(e) {
        s.push(e)
      }
      let l = function(e) {
          for (let t = 0, n = s.length; t < n; t++)
            try {
              s[t].call(null, e)
            } catch (r) {}
        },
        p = (function() {
          const e = /^([\w]+?:\/\/.*?(?=\/|$))/i
          return function(t) {
            return (t = t || ''), e.test(t) ? RegExp.$1 : '*'
          }
        })(),
        f = function() {
          const e = unescape(o.name || '').trim()
          if (e && e.indexOf(c) === 0) {
            o.name = ''
            let t = r.string2object(e.replace(c, ''), '|'),
              n = (t.origin || '').toLowerCase()
            ;(n && n !== '*' && location.href.toLowerCase().indexOf(n) !== 0) ||
              l({
                data: JSON.parse(t.data || 'null'),
                source: o.frames[t.self] || t.self,
                origin: p(t.ref || document.referrer),
              })
          }
        },
        d = (function() {
          let e,
            t = function(e, t) {
              for (let n = 0, r = e.length; n < r; n++)
                if (e[n] === t) return !0
              return !1
            }
          return function() {
            if (u.length) {
              e = []
              for (var n, r = u.length - 1; r >= 0; r--)
                (n = u[r]),
                  t(e, n.w) || (e.push(n.w), u.splice(r, 1), (n.w.name = n.d))
              e = null
            }
          }
        })(),
        m = (i.startTimer = (function() {
          let e = !1
          return function() {
            e ||
              ((e = !0),
              o.postMessage || (setInterval(d, 100), setInterval(f, 20)))
          }
        })())
      ;(i.postMessage = function(e) {
        let t =
          arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
        if ((r.fillUndef(t, { origin: '*', source: a }), o.postMessage)) {
          let n = t.data
          o.FormData || (n = JSON.stringify(n)), e.postMessage(n, t.origin)
        } else {
          if ((m(), r.isObject(t))) {
            const i = {}
            ;(i.origin = t.origin || ''),
              (i.ref = location.href),
              (i.self = t.source),
              (i.data = JSON.stringify(t.data)),
              (t = c + r.object2string(i, '|', !0))
          }
          u.unshift({ w: e, d: escape(t) })
        }
      }),
        (e.exports = i)
    },
    function(e, t, n) {
      let r = n(1),
        o = {}
      ;(o.fromDataURL = r.blobFromDataURL), (e.exports = o)
    },
    function(e, t) {
      function n(e) {
        const t = r.call(e)
        return (
          t === '[object Function]' ||
          (typeof e === 'function' && t !== '[object RegExp]') ||
          (typeof window !== 'undefined' &&
            (e === window.setTimeout ||
              e === window.alert ||
              e === window.confirm ||
              e === window.prompt))
        )
      }
      e.exports = n
      var r = Object.prototype.toString
    },
    function(e, t) {
      e.exports = function n(e, t) {
        let r,
          o,
          i = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,
          a = /(^[ ]*|[ ]*$)/g,
          s = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
          c = /^0x[0-9a-f]+$/i,
          u = /^0/,
          l = function(e) {
            return (n.insensitive && `${e}`.toLowerCase()) || `${e}`
          },
          p = l(e).replace(a, '') || '',
          f = l(t).replace(a, '') || '',
          d = p
            .replace(i, '\0$1\0')
            .replace(/\0$/, '')
            .replace(/^\0/, '')
            .split('\0'),
          m = f
            .replace(i, '\0$1\0')
            .replace(/\0$/, '')
            .replace(/^\0/, '')
            .split('\0'),
          h =
            parseInt(p.match(c), 16) ||
            (d.length !== 1 && p.match(s) && Date.parse(p)),
          y =
            parseInt(f.match(c), 16) ||
            (h && f.match(s) && Date.parse(f)) ||
            null
        if (y) {
          if (h < y) return -1
          if (h > y) return 1
        }
        for (let g = 0, v = Math.max(d.length, m.length); g < v; g++) {
          if (
            ((r = (!(d[g] || '').match(u) && parseFloat(d[g])) || d[g] || 0),
            (o = (!(m[g] || '').match(u) && parseFloat(m[g])) || m[g] || 0),
            isNaN(r) !== isNaN(o))
          )
            return isNaN(r) ? 1 : -1
          if ((typeof r !== typeof o && ((r += ''), (o += '')), r < o))
            return -1
          if (r > o) return 1
        }
        return 0
      }
    },
    function(e, t, n) {
      let r
      ;(function(o) {
        !(function(i, a) {
          function s() {
            return typeof i !== 'undefined'
              ? i
              : typeof self !== 'undefined'
                ? self
                : typeof o !== 'undefined' ? o : {}
          }
          i = s()
          var c,
            u = i.IDBKeyRange || i.webkitIDBKeyRange,
            l = { readonly: 'readonly', readwrite: 'readwrite' },
            p = Object.prototype.hasOwnProperty,
            f = function() {
              if (
                !c &&
                ((c =
                  i.indexedDB ||
                  i.webkitIndexedDB ||
                  i.mozIndexedDB ||
                  i.oIndexedDB ||
                  i.msIndexedDB ||
                  (i.indexedDB === null && i.shimIndexedDB
                    ? i.shimIndexedDB
                    : a)),
                !c)
              )
                throw 'IndexedDB required'
              return c
            },
            d = function(e) {
              return e
            },
            m = function(e) {
              return Object.prototype.toString
                .call(e)
                .slice(8, -1)
                .toLowerCase()
            },
            h = function(e) {
              return typeof e === 'function'
            },
            y = function(e) {
              return m(e) === 'number'
            },
            g = function(e) {
              return m(e) === 'array'
            },
            v = function(e) {
              return e === a
            },
            b = function(e, t) {
              let n = this,
                r = !1
              ;(this.name = t),
                (this.getIndexedDB = function() {
                  return e
                }),
                (this.add = function(t) {
                  if (r) throw 'Database has been closed'
                  for (var o = [], i = 0, a = 0; a < arguments.length - 1; a++)
                    if (Array.isArray(arguments[a + 1]))
                      for (let s = 0; s < arguments[a + 1].length; s++)
                        (o[i] = arguments[a + 1][s]), i++
                    else (o[i] = arguments[a + 1]), i++
                  let c = e.transaction(t, l.readwrite),
                    u = c.objectStore(t)
                  return new Promise((e, t) => {
                    o.forEach(e => {
                      let t
                      if (e.item && e.key) {
                        const n = e.key
                        ;(e = e.item), (t = u.add(e, n))
                      } else t = u.add(e)
                      t.onsuccess = function(t) {
                        let n = t.target,
                          r = n.source.keyPath
                        r === null && (r = '__id__'),
                          Object.defineProperty(e, r, {
                            value: n.result,
                            enumerable: !0,
                          })
                      }
                    }),
                      (c.oncomplete = function() {
                        e(o, n)
                      }),
                      (c.onerror = function(e) {
                        e.preventDefault(), t(e)
                      }),
                      (c.onabort = function(e) {
                        t(e)
                      })
                  })
                }),
                (this.updateAndDelete = function(t, n, o) {
                  if (r) throw 'Database has been closed'
                  let i = e.transaction(t, l.readwrite),
                    a = i.objectStore(t),
                    s = a.keyPath
                  return new Promise((e, t) => {
                    n.forEach(e => {
                      if (e.item && e.key) {
                        const t = e.key
                        ;(e = e.item), a.put(e, t)
                      } else a.put(e)
                    }),
                      o.forEach(e => {
                        a.delete(e[s])
                      }),
                      (i.oncomplete = function() {
                        e([n, o])
                      }),
                      (i.onerror = function(e) {
                        t(e)
                      })
                  })
                }),
                (this.update = function(t) {
                  if (r) throw 'Database has been closed'
                  for (var o, i = [], a = 1; a < arguments.length; a++)
                    (o = arguments[a]),
                      Array.isArray(o) ? (i = i.concat(o)) : i.push(o)
                  let s = e.transaction(t, l.readwrite),
                    c = s.objectStore(t)
                  c.keyPath
                  return new Promise((e, t) => {
                    i.forEach(e => {
                      let t
                      if (e.item && e.key) {
                        const n = e.key
                        ;(e = e.item), (t = c.put(e, n))
                      } else t = c.put(e)
                      ;(t.onsuccess = function(e) {}),
                        (t.onerror = function(e) {})
                    }),
                      (s.oncomplete = function() {
                        e(i, n)
                      }),
                      (s.onerror = function(e) {
                        t(e)
                      }),
                      (s.onabort = function(e) {
                        t(e)
                      })
                  })
                }),
                (this.remove = function(t, n) {
                  if (r) throw 'Database has been closed'
                  let o = e.transaction(t, l.readwrite),
                    i = o.objectStore(t)
                  return new Promise((e, t) => {
                    Array.isArray(n) || (n = [n]),
                      n.forEach(e => {
                        i.delete(e)
                      }),
                      (o.oncomplete = function() {
                        e(n)
                      }),
                      (o.onerror = function(e) {
                        t(e)
                      }),
                      (o.onabort = function(e) {
                        t(e)
                      })
                  })
                }),
                (this.clear = function(t) {
                  if (r) throw 'Database has been closed'
                  let n = e.transaction(t, l.readwrite),
                    o = n.objectStore(t)
                  o.clear()
                  return new Promise((e, t) => {
                    ;(n.oncomplete = function() {
                      e()
                    }),
                      (n.onerror = function(e) {
                        t(e)
                      })
                  })
                }),
                (this.close = function() {
                  r || (e.close(), (r = !0), delete S[t])
                }),
                (this.get = function(t, n) {
                  if (r) throw 'Database has been closed'
                  let o = e.transaction(t),
                    i = o.objectStore(t),
                    a = i.get(n)
                  return new Promise((e, t) => {
                    ;(a.onsuccess = function(t) {
                      e(t.target.result)
                    }),
                      (o.onerror = function(e) {
                        t(e)
                      })
                  })
                }),
                (this.query = function(t, n) {
                  if (r) throw 'Database has been closed'
                  return new w(t, e, n)
                }),
                (this.count = function(t, n) {
                  if (r) throw 'Database has been closed'
                  const o = e.transaction(t)
                  o.objectStore(t)
                })
              for (let o = 0, i = e.objectStoreNames.length; o < i; o++)
                !(function(e) {
                  n[e] = {}
                  for (const t in n)
                    p.call(n, t) &&
                      t !== 'close' &&
                      (n[e][t] = (function(t) {
                        return function() {
                          const r = [e].concat([].slice.call(arguments, 0))
                          return n[t](...r)
                        }
                      })(t))
                })(e.objectStoreNames[o])
            },
            w = function(e, t, n) {
              let r = this,
                o = !1,
                i = !1,
                s = function(r, s, c, p, f, d, m) {
                  return new Promise((y, g) => {
                    let v = o || i ? l.readwrite : l.readonly,
                      b = t.transaction(e, v),
                      w = b.objectStore(e),
                      k = n ? w.index(n) : w,
                      T = r ? u[r].apply(null, s) : null,
                      S = [],
                      M = [T],
                      _ = 0
                    ;(f = f || null),
                      (d = d || []),
                      c !== 'count' && M.push(p || 'next')
                    let x = !!o && Object.keys(o),
                      C = function(e) {
                        for (let t = 0; t < x.length; t++) {
                          let n = x[t],
                            r = o[n]
                          r instanceof Function && (r = r(e)), (e[n] = r)
                        }
                        return e
                      }
                    ;(k[c](...M).onsuccess = function(e) {
                      const t = e.target.result
                      if (typeof t === 'number') S = t
                      else if (t)
                        if (f !== null && f[0] > _) (_ = f[0]), t.advance(f[0])
                        else if (f !== null && _ >= f[0] + f[1]);
                        else {
                          let n = !0,
                            r = 'value' in t ? t.value : t.key
                          d.forEach(e => {
                            e &&
                              e.length &&
                              (e.length === 2
                                ? (n = n && r[e[0]] === e[1])
                                : h(e[0]) && (n = n && e[0].apply(a, [r])))
                          }),
                            n &&
                              (_++,
                              S.push(m(r)),
                              i ? t.delete() : o && ((r = C(r)), t.update(r))),
                            t.continue()
                        }
                    }),
                      (b.oncomplete = function() {
                        y(S)
                      }),
                      (b.onerror = function(e) {
                        g(e)
                      }),
                      (b.onabort = function(e) {
                        g(e)
                      })
                  })
                },
                c = function(e, t) {
                  var n = 'next',
                    r = 'openCursor',
                    a = [],
                    c = null,
                    u = d,
                    l = !1,
                    p = function() {
                      return s(e, t, r, l ? `${n}unique` : n, c, a, u)
                    },
                    f = function() {
                      return (n = null), (r = 'count'), { execute: p }
                    },
                    m = function() {
                      return (
                        (c = g(arguments[0])
                          ? arguments[0]
                          : Array.prototype.slice.call(arguments, 0, 2)),
                        c.length == 1 && c.unshift(0),
                        y(c[1]) || (c = null),
                        {
                          execute: p,
                          count: f,
                          keys: b,
                          filter: w,
                          asc: k,
                          desc: T,
                          distinct: S,
                          modify: M,
                          limit: m,
                          map: _,
                          remove: x,
                        }
                      )
                    },
                    b = function(e) {
                      return (
                        (e = !!v(e) || !!e),
                        e && (r = 'openKeyCursor'),
                        {
                          execute: p,
                          keys: b,
                          filter: w,
                          asc: k,
                          desc: T,
                          distinct: S,
                          modify: M,
                          limit: m,
                          map: _,
                          remove: x,
                        }
                      )
                    },
                    w = function() {
                      return (
                        a.push(Array.prototype.slice.call(arguments, 0, 2)),
                        {
                          execute: p,
                          count: f,
                          keys: b,
                          filter: w,
                          asc: k,
                          desc: T,
                          distinct: S,
                          modify: M,
                          limit: m,
                          map: _,
                          remove: x,
                        }
                      )
                    },
                    k = function(e) {
                      return (
                        (e = !!v(e) || !!e),
                        (n = e ? 'next' : 'prev'),
                        {
                          execute: p,
                          count: f,
                          keys: b,
                          filter: w,
                          asc: k,
                          desc: T,
                          distinct: S,
                          modify: M,
                          limit: m,
                          map: _,
                          remove: x,
                        }
                      )
                    },
                    T = function(e) {
                      return (
                        (e = !!v(e) || !!e),
                        (n = e ? 'prev' : 'next'),
                        {
                          execute: p,
                          count: f,
                          keys: b,
                          filter: w,
                          asc: k,
                          desc: T,
                          distinct: S,
                          modify: M,
                          limit: m,
                          map: _,
                          remove: x,
                        }
                      )
                    },
                    S = function(e) {
                      return (
                        (e = !!v(e) || !!e),
                        (l = e),
                        {
                          execute: p,
                          count: f,
                          keys: b,
                          filter: w,
                          asc: k,
                          desc: T,
                          distinct: S,
                          modify: M,
                          limit: m,
                          map: _,
                          remove: x,
                        }
                      )
                    },
                    M = function(e) {
                      return (
                        (o = e),
                        {
                          execute: p,
                          count: f,
                          keys: b,
                          filter: w,
                          asc: k,
                          desc: T,
                          distinct: S,
                          modify: M,
                          limit: m,
                          map: _,
                          remove: x,
                        }
                      )
                    },
                    _ = function(e) {
                      return (
                        h(e) && (u = e),
                        {
                          execute: p,
                          count: f,
                          keys: b,
                          filter: w,
                          asc: k,
                          desc: T,
                          distinct: S,
                          modify: M,
                          limit: m,
                          map: _,
                          remove: x,
                        }
                      )
                    },
                    x = function(e) {
                      return (
                        (e = !!v(e) || !!e),
                        (i = e),
                        {
                          execute: p,
                          count: f,
                          keys: b,
                          filter: w,
                          asc: k,
                          desc: T,
                          distinct: S,
                          modify: M,
                          limit: m,
                          map: _,
                          remove: x,
                        }
                      )
                    }
                  return {
                    execute: p,
                    count: f,
                    keys: b,
                    filter: w,
                    asc: k,
                    desc: T,
                    distinct: S,
                    modify: M,
                    limit: m,
                    map: _,
                    remove: x,
                  }
                }
              'only bound upperBound lowerBound'.split(' ').forEach(e => {
                r[e] = function() {
                  return new c(e, arguments)
                }
              }),
                (this.filter = function() {
                  const e = new c(null, null)
                  return e.filter(...arguments)
                }),
                (this.all = function() {
                  return this.filter()
                })
            },
            k = function(e, t, n) {
              typeof t === 'function' && (t = t())
              for (const r in t) {
                var o,
                  i = t[r]
                o =
                  !p.call(t, r) || n.objectStoreNames.contains(r)
                    ? e.currentTarget.transaction.objectStore(r)
                    : n.createObjectStore(r, i.key)
                for (const a in i.indexes) {
                  const s = i.indexes[a]
                  try {
                    o.index(a)
                  } catch (e) {
                    o.createIndex(
                      a,
                      s.key || a,
                      Object.keys(s).length ? s : { unique: !1 }
                    )
                  }
                }
              }
            },
            T = function(e, t, n, r) {
              let o = e.target.result,
                i = new b(o, t)
              return (S[t] = o), Promise.resolve(i)
            },
            S = {},
            M = {
              version: '0.10.2',
              open(e) {
                let t
                return new Promise((n, r) => {
                  if (S[e.server])
                    T(
                      { target: { result: S[e.server] } },
                      e.server,
                      e.version,
                      e.schema
                    ).then(n, r)
                  else {
                    try {
                      t = f().open(e.server, e.version)
                    } catch (o) {
                      r(o)
                    }
                    ;(t.onsuccess = function(t) {
                      T(t, e.server, e.version, e.schema).then(n, r)
                    }),
                      (t.onupgradeneeded = function(t) {
                        k(t, e.schema, t.target.result)
                      }),
                      (t.onerror = function(e) {
                        r(e)
                      })
                  }
                })
              },
              remove(e) {
                return new Promise((t, n) => {
                  if (!e) return t()
                  typeof e === b && (e = e.name)
                  let r
                  typeof e === 'string' && (r = S[e]),
                    r && typeof r.close === 'function' && r.close()
                  let o
                  try {
                    o = f().deleteDatabase(e)
                  } catch (i) {
                    n(i)
                  }
                  ;(o.onsuccess = function(n) {
                    delete S[e], t(e)
                  }),
                    (o.onerror = function(e) {
                      n(e)
                    }),
                    (o.onblocked = function(e) {
                      n(e)
                    })
                })
              },
            }
          typeof e !== 'undefined' && typeof e.exports !== 'undefined'
            ? (e.exports = M)
            : ((r = function() {
                return M
              }.call(t, n, t, e)),
              !(r !== a && (e.exports = r)))
        })(window)
      }.call(
        t,
        (function() {
          return this
        })()
      ))
    },
    ,
    function(e, t, n) {
      let r = n(12),
        o = n(109),
        i = n(28),
        a = n(56),
        s = n(37),
        c = n(57),
        u = n(1),
        l = n(66),
        p = n(54),
        f = n(25),
        d = n(2).Promise
      e.exports = function(e) {
        u.merge(e, {
          platform: r,
          xhr: o,
          io: i,
          naturalSort: a,
          deepAccess: s,
          db: c,
          util: u,
          support: l,
          blob: p,
          ajax: f,
          Promise: d,
        })
      }
    },
    function(e, t, n) {
      function r(e) {
        const t = this
        i(e.nick) && (t.nick = `${e.nick}`),
          i(e.avatar) && (t.avatar = `${e.avatar}`),
          i(e.custom) && (t.custom = `${e.custom}`)
      }
      var o = n(1),
        i = o.notundef,
        a = { '-1': 'restricted', 0: 'common', 1: 'owner', 2: 'manager' }
      ;(r.reverse = function(e) {
        const t = o.copy(e)
        return (
          i(t.chatroomId) && (t.chatroomId = `${t.chatroomId}`),
          i(t.type) && (t.type = a[t.type]),
          i(t.level) && (t.level = +t.level),
          i(t.online) && (t.online = +t.online === 1),
          i(t.enterTime) && (t.enterTime = +t.enterTime),
          i(t.guest) && (t.guest = +t.guest === 1),
          i(t.blacked) && (t.blacked = +t.blacked === 1),
          i(t.gaged) && (t.gaged = +t.gaged === 1),
          i(t.valid) && (t.valid = +t.valid === 1),
          i(t.updateTime) && (t.updateTime = +t.updateTime),
          i(t.tempMuted)
            ? (t.tempMuted = +t.tempMuted === 1)
            : (t.tempMuted = !1),
          i(t.tempMuteDuration)
            ? (t.tempMuteDuration = +t.tempMuteDuration)
            : (t.tempMuteDuration = 0),
          t.online || delete t.enterTime,
          t.guest && ((t.type = 'guest'), delete t.valid),
          t.type !== 'common' && delete t.level,
          delete t.guest,
          t
        )
      }),
        (r.reverseMembers = function(e) {
          return e.map(e => {
            return r.reverse(e)
          })
        }),
        (r.validTypes = Object.keys(a)),
        (e.exports = r)
    },
    ,
    function(e, t, n) {
      let r = n(1),
        o = n(52),
        i = r.merge({}, o.idMap, {
          auth: {
            id: 2,
            login: 3,
            kicked: 5,
            logout: 6,
            multiPortLogin: 7,
            kick: 8,
          },
          user: {
            id: 3,
            markInBlacklist: 3,
            getBlacklist: 4,
            markInMutelist: 5,
            getMutelist: 6,
            getRelations: 8,
            getUsers: 7,
            updateMyInfo: 10,
            updateDonnop: 15,
            syncMyInfo: 109,
            syncUpdateMyInfo: 110,
          },
          notify: {
            id: 4,
            markRead: 3,
            syncOfflineMsgs: 4,
            batchMarkRead: 5,
            syncOfflineSysMsgs: 6,
            syncRoamingMsgs: 9,
            syncMsgReceipts: 12,
            syncRobots: 15,
            syncBroadcastMsgs: 16,
          },
          sync: { id: 5, sync: 1, syncTeamMembers: 2 },
          msg: {
            id: 7,
            sendMsg: 1,
            msg: 2,
            sysMsg: 3,
            getHistoryMsgs: 6,
            sendCustomSysMsg: 7,
            searchHistoryMsgs: 8,
            deleteSessions: 9,
            getSessions: 10,
            syncSendMsg: 101,
            sendMsgReceipt: 11,
            msgReceipt: 12,
            deleteMsg: 13,
            msgDeleted: 14,
            markSessionAck: 16,
            broadcastMsg: 17,
          },
          team: {
            id: 8,
            createTeam: 1,
            sendTeamMsg: 2,
            teamMsg: 3,
            teamMsgs: 4,
            addTeamMembers: 5,
            removeTeamMembers: 6,
            updateTeam: 7,
            leaveTeam: 8,
            getTeam: 9,
            getTeams: 10,
            getTeamMembers: 11,
            dismissTeam: 12,
            applyTeam: 13,
            passTeamApply: 14,
            rejectTeamApply: 15,
            addTeamManagers: 16,
            removeTeamManagers: 17,
            transferTeam: 18,
            updateInfoInTeam: 19,
            updateNickInTeam: 20,
            acceptTeamInvite: 21,
            rejectTeamInvite: 22,
            getTeamHistoryMsgs: 23,
            searchTeamHistoryMsgs: 24,
            updateMuteStateInTeam: 25,
            getMyTeamMembers: 26,
            getMutedTeamMembers: 27,
            syncMyTeamMembers: 126,
            syncTeams: 109,
            syncTeamMembers: 111,
            syncCreateTeam: 101,
            syncSendTeamMsg: 102,
            syncUpdateTeamMember: 119,
          },
          friend: {
            id: 12,
            friendRequest: 1,
            syncFriendRequest: 101,
            deleteFriend: 2,
            syncDeleteFriend: 102,
            updateFriend: 3,
            syncUpdateFriend: 103,
            getFriends: 4,
          },
          chatroom: { id: 13, getChatroomAddress: 1 },
          filter: {
            id: 101,
            sendFilterMsg: 1,
            filterMsg: 2,
            filterSysMsg: 3,
            sendFilterCustomSysMsg: 7,
          },
          eventService: {
            id: 14,
            publishEvent: 1,
            pushEvent: 2,
            subscribeEvent: 3,
            unSubscribeEventsByAccounts: 4,
            unSubscribeEventsByType: 5,
            querySubscribeEventsByAccounts: 6,
            querySubscribeEventsByType: 7,
            pushEvents: 9,
          },
        }),
        a = r.merge({}, o.cmdConfig, {
          login: {
            sid: i.auth.id,
            cid: i.auth.login,
            params: [{ type: 'Property', name: 'login' }],
          },
          logout: { sid: i.auth.id, cid: i.auth.logout },
          kick: {
            sid: i.auth.id,
            cid: i.auth.kick,
            params: [{ type: 'StrArray', name: 'deviceIds' }],
          },
          markInBlacklist: {
            sid: i.user.id,
            cid: i.user.markInBlacklist,
            params: [
              { type: 'String', name: 'account' },
              { type: 'bool', name: 'isAdd' },
            ],
          },
          getBlacklist: {
            sid: i.user.id,
            cid: i.user.getBlacklist,
            params: [{ type: 'long', name: 'time' }],
          },
          markInMutelist: {
            sid: i.user.id,
            cid: i.user.markInMutelist,
            params: [
              { type: 'String', name: 'account' },
              { type: 'bool', name: 'isAdd' },
            ],
          },
          getMutelist: {
            sid: i.user.id,
            cid: i.user.getMutelist,
            params: [{ type: 'long', name: 'time' }],
          },
          getRelations: {
            sid: i.user.id,
            cid: i.user.getRelations,
            params: [{ type: 'long', name: 'timetag' }],
          },
          getUsers: {
            sid: i.user.id,
            cid: i.user.getUsers,
            params: [{ type: 'StrArray', name: 'accounts' }],
          },
          updateMyInfo: {
            sid: i.user.id,
            cid: i.user.updateMyInfo,
            params: [{ type: 'Property', name: 'user' }],
          },
          updateDonnop: {
            sid: i.user.id,
            cid: i.user.updateDonnop,
            params: [{ type: 'Property', name: 'donnop' }],
          },
          markRead: {
            sid: i.notify.id,
            cid: i.notify.markRead,
            params: [{ type: 'long', name: 'id' }, { type: 'ph', name: 'ph' }],
          },
          batchMarkRead: {
            sid: i.notify.id,
            cid: i.notify.batchMarkRead,
            params: [
              { type: 'byte', name: 'sid' },
              { type: 'byte', name: 'cid' },
              { type: 'LongArray', name: 'ids' },
            ],
          },
          sync: {
            sid: i.sync.id,
            cid: i.sync.sync,
            params: [{ type: 'Property', name: 'sync' }],
          },
          syncTeamMembers: {
            sid: i.sync.id,
            cid: i.sync.syncTeamMembers,
            params: [{ type: 'LongLongMap', name: 'sync' }],
          },
          sendMsg: {
            sid: i.msg.id,
            cid: i.msg.sendMsg,
            params: [{ type: 'Property', name: 'msg' }],
          },
          getHistoryMsgs: {
            sid: i.msg.id,
            cid: i.msg.getHistoryMsgs,
            params: [
              { type: 'String', name: 'to' },
              { type: 'long', name: 'beginTime' },
              { type: 'long', name: 'endTime' },
              { type: 'long', name: 'lastMsgId' },
              { type: 'int', name: 'limit' },
              { type: 'bool', name: 'reverse' },
            ],
          },
          sendCustomSysMsg: {
            sid: i.msg.id,
            cid: i.msg.sendCustomSysMsg,
            params: [{ type: 'Property', name: 'sysMsg' }],
          },
          searchHistoryMsgs: {
            sid: i.msg.id,
            cid: i.msg.searchHistoryMsgs,
            params: [
              { type: 'String', name: 'to' },
              { type: 'long', name: 'beginTime' },
              { type: 'long', name: 'endTime' },
              { type: 'String', name: 'keyword' },
              { type: 'int', name: 'limit' },
              { type: 'bool', name: 'reverse' },
            ],
          },
          getSessions: {
            sid: i.msg.id,
            cid: i.msg.getSessions,
            params: [{ type: 'long', name: 'time' }],
          },
          deleteSessions: {
            sid: i.msg.id,
            cid: i.msg.deleteSessions,
            params: [{ type: 'StrArray', name: 'sessions' }],
          },
          sendMsgReceipt: {
            sid: i.msg.id,
            cid: i.msg.sendMsgReceipt,
            params: [{ type: 'Property', name: 'msgReceipt' }],
          },
          deleteMsg: {
            sid: i.msg.id,
            cid: i.msg.deleteMsg,
            params: [{ type: 'Property', name: 'sysMsg' }],
          },
          markSessionAck: {
            sid: i.msg.id,
            cid: i.msg.markSessionAck,
            params: [
              { type: 'byte', name: 'scene' },
              { type: 'String', name: 'to' },
              { type: 'long', name: 'timetag' },
            ],
          },
          createTeam: {
            sid: i.team.id,
            cid: i.team.createTeam,
            params: [
              { type: 'Property', name: 'team' },
              { type: 'StrArray', name: 'accounts' },
              { type: 'String', name: 'ps' },
            ],
          },
          sendTeamMsg: {
            sid: i.team.id,
            cid: i.team.sendTeamMsg,
            params: [{ type: 'Property', name: 'msg' }],
          },
          addTeamMembers: {
            sid: i.team.id,
            cid: i.team.addTeamMembers,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'StrArray', name: 'accounts' },
              { type: 'String', name: 'ps' },
            ],
          },
          removeTeamMembers: {
            sid: i.team.id,
            cid: i.team.removeTeamMembers,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'StrArray', name: 'accounts' },
            ],
          },
          updateTeam: {
            sid: i.team.id,
            cid: i.team.updateTeam,
            params: [{ type: 'Property', name: 'team' }],
          },
          leaveTeam: {
            sid: i.team.id,
            cid: i.team.leaveTeam,
            params: [{ type: 'long', name: 'teamId' }],
          },
          getTeam: {
            sid: i.team.id,
            cid: i.team.getTeam,
            params: [{ type: 'long', name: 'teamId' }],
          },
          getTeams: {
            sid: i.team.id,
            cid: i.team.getTeams,
            params: [{ type: 'long', name: 'timetag' }],
          },
          getTeamMembers: {
            sid: i.team.id,
            cid: i.team.getTeamMembers,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'long', name: 'timetag' },
            ],
          },
          dismissTeam: {
            sid: i.team.id,
            cid: i.team.dismissTeam,
            params: [{ type: 'long', name: 'teamId' }],
          },
          applyTeam: {
            sid: i.team.id,
            cid: i.team.applyTeam,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'String', name: 'ps' },
            ],
          },
          passTeamApply: {
            sid: i.team.id,
            cid: i.team.passTeamApply,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'String', name: 'from' },
            ],
          },
          rejectTeamApply: {
            sid: i.team.id,
            cid: i.team.rejectTeamApply,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'String', name: 'from' },
              { type: 'String', name: 'ps' },
            ],
          },
          addTeamManagers: {
            sid: i.team.id,
            cid: i.team.addTeamManagers,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'StrArray', name: 'accounts' },
            ],
          },
          removeTeamManagers: {
            sid: i.team.id,
            cid: i.team.removeTeamManagers,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'StrArray', name: 'accounts' },
            ],
          },
          transferTeam: {
            sid: i.team.id,
            cid: i.team.transferTeam,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'String', name: 'account' },
              { type: 'bool', name: 'leave' },
            ],
          },
          updateInfoInTeam: {
            sid: i.team.id,
            cid: i.team.updateInfoInTeam,
            params: [{ type: 'Property', name: 'teamMember' }],
          },
          updateNickInTeam: {
            sid: i.team.id,
            cid: i.team.updateNickInTeam,
            params: [{ type: 'Property', name: 'teamMember' }],
          },
          acceptTeamInvite: {
            sid: i.team.id,
            cid: i.team.acceptTeamInvite,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'String', name: 'from' },
            ],
          },
          rejectTeamInvite: {
            sid: i.team.id,
            cid: i.team.rejectTeamInvite,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'String', name: 'from' },
              { type: 'String', name: 'ps' },
            ],
          },
          getTeamHistoryMsgs: {
            sid: i.team.id,
            cid: i.team.getTeamHistoryMsgs,
            params: [
              { type: 'long', name: 'to' },
              { type: 'long', name: 'beginTime' },
              { type: 'long', name: 'endTime' },
              { type: 'long', name: 'lastMsgId' },
              { type: 'int', name: 'limit' },
              { type: 'bool', name: 'reverse' },
            ],
          },
          searchTeamHistoryMsgs: {
            sid: i.team.id,
            cid: i.team.searchTeamHistoryMsgs,
            params: [
              { type: 'long', name: 'to' },
              { type: 'long', name: 'beginTime' },
              { type: 'long', name: 'endTime' },
              { type: 'String', name: 'keyword' },
              { type: 'int', name: 'limit' },
              { type: 'bool', name: 'reverse' },
            ],
          },
          updateMuteStateInTeam: {
            sid: i.team.id,
            cid: i.team.updateMuteStateInTeam,
            params: [
              { type: 'long', name: 'teamId' },
              { type: 'String', name: 'account' },
              { type: 'int', name: 'mute' },
            ],
          },
          getMyTeamMembers: {
            sid: i.team.id,
            cid: i.team.getMyTeamMembers,
            params: [{ type: 'LongArray', name: 'teamIds' }],
          },
          getMutedTeamMembers: {
            sid: i.team.id,
            cid: i.team.getMutedTeamMembers,
            params: [{ type: 'long', name: 'teamId' }],
          },
          friendRequest: {
            sid: i.friend.id,
            cid: i.friend.friendRequest,
            params: [
              { type: 'String', name: 'account' },
              { type: 'byte', name: 'type' },
              { type: 'String', name: 'ps' },
            ],
          },
          deleteFriend: {
            sid: i.friend.id,
            cid: i.friend.deleteFriend,
            params: [{ type: 'String', name: 'account' }],
          },
          updateFriend: {
            sid: i.friend.id,
            cid: i.friend.updateFriend,
            params: [{ type: 'Property', name: 'friend' }],
          },
          getFriends: {
            sid: i.friend.id,
            cid: i.friend.getFriends,
            params: [{ type: 'long', name: 'timetag' }],
          },
          getChatroomAddress: {
            sid: i.chatroom.id,
            cid: i.chatroom.getChatroomAddress,
            params: [{ type: 'long', name: 'chatroomId' }],
          },
          sendFilterMsg: {
            sid: i.filter.id,
            cid: i.filter.sendFilterMsg,
            params: [{ type: 'Property', name: 'msg' }],
          },
          sendFilterCustomSysMsg: {
            sid: i.filter.id,
            cid: i.filter.sendFilterCustomSysMsg,
            params: [{ type: 'Property', name: 'sysMsg' }],
          },
          publishEvent: {
            sid: i.eventService.id,
            cid: i.eventService.publishEvent,
            params: [{ type: 'Property', name: 'msgEvent' }],
          },
          pushEvent: { sid: i.eventService.id, cid: i.eventService.pushEvent },
          subscribeEvent: {
            sid: i.eventService.id,
            cid: i.eventService.subscribeEvent,
            params: [
              { type: 'Property', name: 'msgEventSubscribe' },
              { type: 'StrArray', name: 'accounts' },
            ],
          },
          unSubscribeEventsByAccounts: {
            sid: i.eventService.id,
            cid: i.eventService.unSubscribeEventsByAccounts,
            params: [
              { type: 'Property', name: 'msgEventSubscribe' },
              { type: 'StrArray', name: 'accounts' },
            ],
          },
          unSubscribeEventsByType: {
            sid: i.eventService.id,
            cid: i.eventService.unSubscribeEventsByType,
            params: [{ type: 'Property', name: 'msgEventSubscribe' }],
          },
          querySubscribeEventsByAccounts: {
            sid: i.eventService.id,
            cid: i.eventService.querySubscribeEventsByAccounts,
            params: [
              { type: 'Property', name: 'msgEventSubscribe' },
              { type: 'StrArray', name: 'accounts' },
            ],
          },
          querySubscribeEventsByType: {
            sid: i.eventService.id,
            cid: i.eventService.querySubscribeEventsByType,
            params: [{ type: 'Property', name: 'msgEventSubscribe' }],
          },
          pushEvents: {
            sid: i.eventService.id,
            cid: i.eventService.pushEvents,
          },
        }),
        s = r.merge({}, o.packetConfig, {
          '2_3': {
            service: 'auth',
            cmd: 'login',
            response: [
              { type: 'Property', name: 'loginRes' },
              {
                type: 'PropertyArray',
                name: 'loginPorts',
                entity: 'loginPort',
              },
            ],
          },
          '2_5': {
            service: 'auth',
            cmd: 'kicked',
            response: [
              { type: 'Number', name: 'from' },
              { type: 'Number', name: 'reason' },
            ],
          },
          '2_6': { service: 'auth', cmd: 'logout' },
          '2_7': {
            service: 'auth',
            cmd: 'multiPortLogin',
            response: [
              { type: 'Number', name: 'state' },
              {
                type: 'PropertyArray',
                name: 'loginPorts',
                entity: 'loginPort',
              },
            ],
          },
          '2_8': {
            service: 'auth',
            cmd: 'kick',
            response: [{ type: 'StrArray', name: 'deviceIds' }],
          },
          '3_3': { service: 'user', cmd: 'markInBlacklist' },
          '3_103': {
            service: 'user',
            cmd: 'syncMarkInBlacklist',
            response: [
              { type: 'String', name: 'account' },
              { type: 'Boolean', name: 'isAdd' },
            ],
          },
          '3_4': {
            service: 'user',
            cmd: 'getBlacklist',
            response: [{ type: 'StrArray', name: 'blacklist' }],
          },
          '3_5': { service: 'user', cmd: 'markInMutelist' },
          '3_105': {
            service: 'user',
            cmd: 'syncMarkInMutelist',
            response: [
              { type: 'String', name: 'account' },
              { type: 'Boolean', name: 'isAdd' },
            ],
          },
          '3_6': {
            service: 'user',
            cmd: 'getMutelist',
            response: [{ type: 'StrArray', name: 'mutelist' }],
          },
          '3_8': {
            service: 'user',
            cmd: 'getRelations',
            response: [
              {
                type: 'PropertyArray',
                name: 'specialRelations',
                entity: 'specialRelation',
              },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '3_7': {
            service: 'user',
            cmd: 'getUsers',
            response: [
              { type: 'PropertyArray', name: 'users', entity: 'user' },
            ],
          },
          '3_10': {
            service: 'user',
            cmd: 'updateMyInfo',
            response: [{ type: 'Number', name: 'timetag' }],
          },
          '3_15': {
            service: 'user',
            cmd: 'updateDonnop',
            response: [{ type: 'Number', name: 'timetag' }],
          },
          '3_115': {
            service: 'user',
            cmd: 'syncUpdateDonnop',
            response: [
              { type: 'Property', name: 'donnop' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '3_109': {
            service: 'user',
            cmd: 'syncMyInfo',
            response: [
              { type: 'Property', name: 'user' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '3_110': {
            service: 'user',
            cmd: 'syncUpdateMyInfo',
            response: [{ type: 'Property', name: 'user' }],
          },
          '4_1': { service: 'notify' },
          '4_2': { service: 'notify' },
          '4_3': { service: 'notify', cmd: 'markRead' },
          '4_4': {
            service: 'notify',
            cmd: 'syncOfflineMsgs',
            response: [{ type: 'PropertyArray', name: 'msgs', entity: 'msg' }],
          },
          '4_5': { service: 'notify', cmd: 'batchMarkRead' },
          '4_6': {
            service: 'notify',
            cmd: 'syncOfflineSysMsgs',
            response: [
              { type: 'PropertyArray', name: 'sysMsgs', entity: 'sysMsg' },
            ],
          },
          '4_9': {
            service: 'notify',
            cmd: 'syncRoamingMsgs',
            response: [{ type: 'PropertyArray', name: 'msgs', entity: 'msg' }],
          },
          '4_12': {
            service: 'notify',
            cmd: 'syncMsgReceipts',
            response: [
              {
                type: 'PropertyArray',
                name: 'msgReceipts',
                entity: 'msgReceipt',
              },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '4_13': {
            service: 'notify',
            cmd: 'syncDonnop',
            response: [
              { type: 'Property', name: 'donnop' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '4_14': {
            service: 'notify',
            cmd: 'syncSessionAck',
            response: [
              { type: 'StrLongMap', name: 'p2p' },
              { type: 'LongLongMap', name: 'team' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '4_15': {
            service: 'notify',
            cmd: 'syncRobots',
            response: [
              { type: 'PropertyArray', name: 'robots', entity: 'robot' },
            ],
          },
          '4_16': {
            service: 'notify',
            cmd: 'syncBroadcastMsgs',
            response: [
              {
                type: 'PropertyArray',
                name: 'broadcastMsgs',
                entity: 'broadcastMsg',
              },
            ],
          },
          '4_100': {
            service: 'notify',
            cmd: 'syncOfflineFilterMsgs',
            response: [{ type: 'PropertyArray', name: 'msgs', entity: 'msg' }],
          },
          '4_101': {
            service: 'notify',
            cmd: 'syncOfflineFilterSysMsgs',
            response: [
              { type: 'PropertyArray', name: 'sysMsgs', entity: 'sysMsg' },
            ],
          },
          '5_1': {
            service: 'sync',
            cmd: 'syncDone',
            response: [{ type: 'Number', name: 'timetag' }],
          },
          '5_2': {
            service: 'sync',
            cmd: 'syncTeamMembersDone',
            response: [{ type: 'Number', name: 'timetag' }],
          },
          '7_1': {
            service: 'msg',
            cmd: 'sendMsg',
            response: [{ type: 'Property', name: 'msg' }],
            trivialErrorCodes: [7101],
          },
          '7_2': {
            service: 'msg',
            cmd: 'msg',
            response: [{ type: 'Property', name: 'msg' }],
          },
          '7_3': {
            service: 'msg',
            cmd: 'sysMsg',
            response: [{ type: 'Property', name: 'sysMsg' }],
          },
          '7_6': {
            service: 'msg',
            cmd: 'getHistoryMsgs',
            response: [{ type: 'PropertyArray', name: 'msgs', entity: 'msg' }],
          },
          '7_7': {
            service: 'msg',
            cmd: 'sendCustomSysMsg',
            trivialErrorCodes: [7101],
          },
          '7_8': {
            service: 'msg',
            cmd: 'searchHistoryMsgs',
            response: [{ type: 'PropertyArray', name: 'msgs', entity: 'msg' }],
          },
          '7_9': { service: 'msg', cmd: 'deleteSessions' },
          '7_10': {
            service: 'msg',
            cmd: 'getSessions',
            response: [{ type: 'StrArray', name: 'sessions' }],
          },
          '7_101': {
            service: 'msg',
            cmd: 'syncSendMsg',
            response: [{ type: 'Property', name: 'msg' }],
          },
          '7_11': {
            service: 'msg',
            cmd: 'sendMsgReceipt',
            response: [{ type: 'Property', name: 'msgReceipt' }],
          },
          '7_12': {
            service: 'msg',
            cmd: 'msgReceipt',
            response: [{ type: 'Property', name: 'msgReceipt' }],
          },
          '7_13': { service: 'msg', cmd: 'onDeleteMsg' },
          '7_14': {
            service: 'msg',
            cmd: 'onMsgDeleted',
            response: [{ type: 'Property', name: 'sysMsg' }],
          },
          '7_15': {
            service: 'msg',
            cmd: 'onDeleteMsgOfflineRoaming',
            response: [
              { type: 'PropertyArray', name: 'sysMsgs', entity: 'sysMsg' },
              { type: 'Number', name: 'timetag' },
              { type: 'Number', name: 'type' },
            ],
          },
          '7_16': { service: 'msg', cmd: 'onMarkSessionAck' },
          '7_17': {
            service: 'msg',
            cmd: 'broadcastMsg',
            response: [{ type: 'Property', name: 'broadcastMsg' }],
          },
          '7_116': {
            service: 'msg',
            cmd: 'syncMarkSessionAck',
            response: [
              { type: 'Number', name: 'scene' },
              { type: 'String', name: 'to' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '8_1': {
            service: 'team',
            cmd: 'createTeam',
            response: [{ type: 'Property', name: 'team' }],
          },
          '8_2': {
            service: 'team',
            cmd: 'sendTeamMsg',
            response: [{ type: 'Property', name: 'msg' }],
          },
          '8_3': {
            service: 'team',
            cmd: 'teamMsg',
            response: [{ type: 'Property', name: 'msg' }],
          },
          '8_4': {
            service: 'team',
            cmd: 'teamMsgs',
            response: [{ type: 'PropertyArray', name: 'msgs', entity: 'msg' }],
          },
          '8_5': { service: 'team', cmd: 'addTeamMembers' },
          '8_6': { service: 'team', cmd: 'removeTeamMembers' },
          '8_7': {
            service: 'team',
            cmd: 'updateTeam',
            response: [
              { type: 'Number', name: 'id' },
              { type: 'Number', name: 'time' },
            ],
          },
          '8_8': { service: 'team', cmd: 'leaveTeam' },
          '8_9': {
            service: 'team',
            cmd: 'getTeam',
            response: [{ type: 'Property', name: 'team' }],
          },
          '8_10': {
            service: 'team',
            cmd: 'getTeams',
            response: [
              { type: 'PropertyArray', name: 'teams', entity: 'team' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '8_11': {
            service: 'team',
            cmd: 'getTeamMembers',
            response: [
              { type: 'Number', name: 'teamId' },
              { type: 'PropertyArray', name: 'members', entity: 'teamMember' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '8_12': { service: 'team', cmd: 'dismissTeam' },
          '8_13': {
            service: 'team',
            cmd: 'applyTeam',
            response: [{ type: 'Property', name: 'team' }],
          },
          '8_14': { service: 'team', cmd: 'passTeamApply' },
          '8_15': { service: 'team', cmd: 'rejectTeamApply' },
          '8_16': { service: 'team', cmd: 'addTeamManagers' },
          '8_17': { service: 'team', cmd: 'removeTeamManagers' },
          '8_18': { service: 'team', cmd: 'transferTeam' },
          '8_19': { service: 'team', cmd: 'updateInfoInTeam' },
          '8_20': { service: 'team', cmd: 'updateNickInTeam' },
          '8_21': {
            service: 'team',
            cmd: 'acceptTeamInvite',
            response: [{ type: 'Property', name: 'team' }],
          },
          '8_22': { service: 'team', cmd: 'rejectTeamInvite' },
          '8_23': {
            service: 'team',
            cmd: 'getTeamHistoryMsgs',
            response: [{ type: 'PropertyArray', name: 'msgs', entity: 'msg' }],
          },
          '8_24': {
            service: 'team',
            cmd: 'searchTeamHistoryMsgs',
            response: [{ type: 'PropertyArray', name: 'msgs', entity: 'msg' }],
          },
          '8_25': { service: 'team', cmd: 'updateMuteStateInTeam' },
          '8_26': {
            service: 'team',
            cmd: 'getMyTeamMembers',
            response: [
              {
                type: 'PropertyArray',
                name: 'teamMembers',
                entity: 'teamMember',
              },
            ],
          },
          '8_27': {
            service: 'team',
            cmd: 'getMutedTeamMembers',
            response: [
              { type: 'Number', name: 'teamId' },
              {
                type: 'PropertyArray',
                name: 'teamMembers',
                entity: 'teamMember',
              },
            ],
          },
          '8_126': {
            service: 'team',
            cmd: 'syncMyTeamMembers',
            response: [
              {
                type: 'PropertyArray',
                name: 'teamMembers',
                entity: 'teamMember',
              },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '8_109': {
            service: 'team',
            cmd: 'syncTeams',
            response: [
              { type: 'Number', name: 'timetag' },
              { type: 'PropertyArray', name: 'teams', entity: 'team' },
            ],
          },
          '8_111': {
            service: 'team',
            cmd: 'syncTeamMembers',
            response: [
              { type: 'Number', name: 'teamId' },
              { type: 'PropertyArray', name: 'members', entity: 'teamMember' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '8_101': {
            service: 'team',
            cmd: 'syncCreateTeam',
            response: [{ type: 'Property', name: 'team' }],
          },
          '8_102': {
            service: 'team',
            cmd: 'syncSendTeamMsg',
            response: [{ type: 'Property', name: 'msg' }],
          },
          '8_119': {
            service: 'team',
            cmd: 'syncUpdateTeamMember',
            response: [{ type: 'Property', name: 'teamMember' }],
          },
          '12_1': { service: 'friend', cmd: 'friendRequest' },
          '12_101': {
            service: 'friend',
            cmd: 'syncFriendRequest',
            response: [
              { type: 'String', name: 'account' },
              { type: 'Number', name: 'type' },
              { type: 'String', name: 'ps' },
            ],
          },
          '12_2': { service: 'friend', cmd: 'deleteFriend' },
          '12_102': {
            service: 'friend',
            cmd: 'syncDeleteFriend',
            response: [{ type: 'String', name: 'account' }],
          },
          '12_3': { service: 'friend', cmd: 'updateFriend' },
          '12_103': {
            service: 'friend',
            cmd: 'syncUpdateFriend',
            response: [{ type: 'Property', name: 'friend' }],
          },
          '12_4': {
            service: 'friend',
            cmd: 'getFriends',
            response: [
              { type: 'PropertyArray', name: 'friends', entity: 'friend' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '12_5': {
            service: 'friend',
            cmd: 'syncFriends',
            response: [
              { type: 'PropertyArray', name: 'friends', entity: 'friend' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '12_6': {
            service: 'friend',
            cmd: 'syncFriendUsers',
            response: [
              { type: 'PropertyArray', name: 'users', entity: 'user' },
              { type: 'Number', name: 'timetag' },
            ],
          },
          '13_1': {
            service: 'chatroom',
            cmd: 'getChatroomAddress',
            response: [{ type: 'StrArray', name: 'address' }],
          },
          '14_1': {
            service: 'eventService',
            cmd: 'publishEvent',
            response: [{ type: 'Property', name: 'msgEvent' }],
          },
          '14_2': {
            service: 'eventService',
            cmd: 'pushEvent',
            response: [{ type: 'Property', name: 'msgEvent' }],
          },
          '14_3': {
            service: 'eventService',
            cmd: 'subscribeEvent',
            response: [{ type: 'StrArray', name: 'accounts' }],
          },
          '14_4': {
            service: 'eventService',
            cmd: 'unSubscribeEventsByAccounts',
            response: [{ type: 'StrArray', name: 'accounts' }],
          },
          '14_5': { service: 'eventService', cmd: 'unSubscribeEventsByType' },
          '14_6': {
            service: 'eventService',
            cmd: 'querySubscribeEventsByAccounts',
            response: [
              {
                type: 'PropertyArray',
                name: 'msgEventSubscribes',
                entity: 'msgEventSubscribe',
              },
            ],
          },
          '14_7': {
            service: 'eventService',
            cmd: 'querySubscribeEventsByType',
            response: [
              {
                type: 'PropertyArray',
                name: 'msgEventSubscribes',
                entity: 'msgEventSubscribe',
              },
            ],
          },
          '14_9': {
            service: 'eventService',
            cmd: 'pushEvents',
            response: [
              { type: 'PropertyArray', name: 'msgEvents', entity: 'msgEvent' },
            ],
          },
          '101_1': {
            service: 'filter',
            cmd: 'sendFilterMsg',
            response: [{ type: 'Property', name: 'msg' }],
          },
          '101_2': {
            service: 'filter',
            cmd: 'filterMsg',
            response: [{ type: 'Property', name: 'msg' }],
          },
          '101_3': {
            service: 'filter',
            cmd: 'filterSysMsg',
            response: [{ type: 'Property', name: 'sysMsg' }],
          },
          '101_7': { service: 'filter', cmd: 'sendFilterCustomSysMsg' },
        })
      e.exports = { idMap: i, cmdConfig: a, packetConfig: s }
    },
    ,
    ,
    ,
    function(e, t) {
      const n = {}
      ;(n.set = function(e, t, r) {
        ;(n[e] = t), r && (r.support = t)
      }),
        (e.exports = n)
    },
    function(e, t) {
      function n(e) {
        ;(e = e || {}),
          (this.ms = e.min || 100),
          (this.max = e.max || 1e4),
          (this.factor = e.factor || 2),
          (this.jitter = e.jitter > 0 && e.jitter <= 1 ? e.jitter : 0),
          (this.attempts = 0)
      }
      ;(e.exports = n),
        (n.prototype.duration = function() {
          let e = this.ms * Math.pow(this.factor, this.attempts++)
          if (this.jitter) {
            let t = Math.random(),
              n = Math.floor(t * this.jitter * e)
            e = (1 & Math.floor(10 * t)) == 0 ? e - n : e + n
          }
          return 0 | Math.min(e, this.max)
        }),
        (n.prototype.reset = function() {
          this.attempts = 0
        }),
        (n.prototype.setMin = function(e) {
          this.ms = e
        }),
        (n.prototype.setMax = function(e) {
          this.max = e
        }),
        (n.prototype.setJitter = function(e) {
          this.jitter = e
        })
    },
    function(e, t, n) {
      function r() {}
      const o = n(15)
      r.typeMap = {
        text: 0,
        image: 1,
        audio: 2,
        video: 3,
        geo: 4,
        notification: 5,
        file: 6,
        tip: 10,
        robot: 11,
        custom: 100,
      }
      const i = (r.typeReverseMap = {
        0: 'text',
        1: 'image',
        2: 'audio',
        3: 'video',
        4: 'geo',
        5: 'notification',
        6: 'file',
        10: 'tip',
        11: 'robot',
        100: 'custom',
      })
      ;(r.validTypes = Object.keys(r.typeMap)),
        (r.setFlow = function(e, t) {
          let n = t === e.from
          n && t === e.to && (n = o.deviceId === e.fromDeviceId),
            (e.flow = n ? 'out' : 'in'),
            e.type === 'robot' &&
              e.content &&
              e.content.msgOut &&
              (e.flow = 'in')
        }),
        (r.getType = function(e) {
          const t = e.type
          return i[t] || t
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      n(99), n(26), n(102), n(2).polyfill()
    },
    function(e, t, n) {
      const r = n(14).fn
      ;(r.isConnected = function() {
        return this.protocol.isConnected()
      }),
        (r.connect = function() {
          this.protocol.connect()
        }),
        (r.disconnect = function() {
          this.protocol.disconnect()
        })
    },
    function(e, t, n) {
      let r = n(1),
        o = n(14).fn
      o.uploadSdkLogUrl = function(e) {
        return (
          r.verifyOptions(e, 'url'), this.cbAndSendCmd('uploadSdkLogUrl', e)
        )
      }
    },
    function(e, t, n) {
      ;(function(e) {
        let t = n(14).fn,
          r = n(1),
          o = n(108),
          i = n(5),
          a = n(3),
          s = n(97),
          c = n(98),
          u = n(54)
        ;(t.sendText = function(e) {
          const t = this
          return (
            t.processCallback(e),
            (e.msg = new t.message.TextMessage(e)),
            t.sendMsg(e)
          )
        }),
          (t.previewFile = function(e) {
            if (
              (r.verifyOptions(e, 'done'),
              e.type || (e.type = 'file'),
              r.verifyParamPresentJustOne(
                e,
                'dataURL blob fileInput wxFilePath'
              ),
              e.dataURL)
            )
              e.blob = u.fromDataURL(e.dataURL)
            else if (e.blob);
            else if (e.fileInput) {
              if (
                ((e.fileInput = r.verifyFileInput(e.fileInput)),
                e.fileInput.files && !e.fileInput.files.length)
              )
                return void e.done(i.newNoFileError(`请选择${e.type}文件`), e)
              e.fileInputName = r.getFileName(e.fileInput)
            }
            this.processCallback(e)
            const t = s.genResponseBody(e.type) || {}
            this.getNosToken({
              responseBody: JSON.stringify(t).replace(/"/gi, '\\"'),
              callback: function(t, n) {
                return t
                  ? void e.done(t, e.callback.options)
                  : ((e.nosToken = n), void this._doPreviewFile(e))
              }.bind(this),
            })
          }),
          (t._doPreviewFile = function(t) {
            function n(n, c) {
              if (((t.uploaddone = i), n))
                return (
                  n.appendMessage('api::previewFile: upload file failed'),
                  void t.done(n, t.callback.options)
                )
              if (
                ((c = s.parseResponse(c, o.options.exifOrientation)),
                (c.url = a.genDownloadUrl(t.nosToken.bucket, l.Object)),
                r.exist(t.fileInputName))
              )
                c.name = t.fileInputName
              else if (t.blob) {
                const u = t.blob.name
                if (((c.name = u || `blob-${c.md5}`), !u)) {
                  const p = t.blob.type
                  c.ext = p.slice(p.lastIndexOf('/') + 1)
                }
              }
              if ((e.env.WEIXIN_APP && (c.name = t.wxFilePath), !c.ext)) {
                const f = c.name.lastIndexOf('.')
                f === -1 ? (c.ext = 'unknown') : (c.ext = c.name.slice(f + 1))
              }
              return void t.done(null, r.copy(c))
            }
            var o = this,
              i = t.uploaddone,
              u = a.genUploadUrl(t.nosToken.bucket),
              l = this.assembleUploadParams(t.nosToken),
              p = 'file'
            e.env.WEIXIN_APP
              ? (r.verifyOptions(t, 'wxFilePath'),
                wx.uploadFile({
                  url: u,
                  filePath: t.wxFilePath,
                  name: p,
                  formData: l,
                  fail(e) {
                    console.log(e)
                  },
                  success(e) {
                    if ((console.log(e), e.statusCode === 200))
                      try {
                        n(null, JSON.parse(e.data))
                      } catch (t) {
                        console.error('parse wx upload file res error', t),
                          n({
                            code: 'PARSE_WX_UPLOAD_FILE_RES_ERROR',
                            str: e.data,
                            msg: e.errMsg,
                          })
                      }
                    else n({ code: e.statusCode, msg: e.errMsg })
                  },
                }))
              : ((t.uploaddone = n),
                (t.url = u),
                (t.params = l),
                (t.fileName = p),
                new c(t))
          }),
          (t.sendFile = function(e) {
            const t = this
            if (
              (e.type || (e.type = 'file'),
              r.verifyParamPresentJustOne(
                e,
                'dataURL blob fileInput file wxFilePath'
              ),
              t.processCallback(e),
              e.dataURL)
            )
              t._previewAndSendFile(e)
            else if (e.blob) t._previewAndSendFile(e)
            else if (e.fileInput) {
              if (
                ((e.fileInput = r.verifyFileInput(e.fileInput)),
                e.fileInput.files && !e.fileInput.files.length)
              )
                return void e.done(
                  i.newNoFileError(`请选择${e.type}文件`),
                  e.callback.options
                )
              t._previewAndSendFile(e)
            } else if (e.wxFilePath) t._previewAndSendFile(e)
            else if (e.file)
              return (e.msg = new t.message.FileMessage(e)), t.sendMsg(e)
          }),
          (t._previewAndSendFile = function(e) {
            const t = this
            r.verifyCallback(e, 'uploaddone beforesend')
            const n = e.done
            ;(e.done = function(o, i) {
              ;(e.done = n),
                o
                  ? e.uploaddone(o, e.callback.options)
                  : (e.uploaddone(null, r.copy(i)),
                    (e.file = i),
                    (e.msg = new t.message.FileMessage(e)),
                    e.beforesend(t.sendMsg(e)))
            }),
              t.previewFile(e)
          }),
          (t.assembleUploadParams = function(e) {
            return e
              ? {
                  Object: decodeURIComponent(e.objectName),
                  'x-nos-token': e.token,
                  'x-nos-entity-type': 'json',
                }
              : null
          }),
          (t.sendGeo = function(e) {
            const t = this
            return (
              t.processCallback(e),
              (e.msg = new t.message.GeoMessage(e)),
              t.sendMsg(e)
            )
          }),
          (t.sendTipMsg = function(e) {
            const t = this
            return (
              t.processCallback(e),
              (e.msg = new t.message.TipMessage(e)),
              t.sendMsg(e)
            )
          }),
          (t.sendCustomMsg = function(e) {
            const t = this
            return (
              t.processCallback(e),
              (e.msg = new t.message.CustomMessage(e)),
              t.sendMsg(e)
            )
          }),
          (t.sendRobotMsg = function(e) {
            const t = this
            return (
              t.processCallback(e),
              (e.msg = new t.message.RobotMessage(e)),
              t.sendMsg(e)
            )
          }),
          (t.sendMsg = function(e) {
            let t = this,
              n = t.protocol,
              o = e.msg,
              i = {},
              a = !!e.isLocal
            if (
              (a && e.time && (o.time = e.time),
              e.resend && (e.flow !== 'out' || e.status !== 'fail'))
            )
              return r.onError('只能重发发送失败的消息')
            ;(e.callback.options.idClient = o.idClient), t.beforeSendMsg(e, i)
            let s = (e.rtnMsg = t.formatReturnMsg(o))
            return (
              a && ((s.status = 'success'), (s.isLocal = !0)),
              n.storeSendMsg && (i.promise = n.storeSendMsg(s)),
              (e.cbaop = function(e) {
                if (e && e.from !== 'server')
                  return (
                    (s.status = 'fail'),
                    n.updateSendMsgError && n.updateSendMsgError(s),
                    s
                  )
              }),
              a || ((i.msg = o), t.sendCmd(e.cmd, i, e.callback)),
              t.afterSendMsg(e),
              a &&
                setTimeout(() => {
                  ;(s = r.simpleClone(s)), e.done(null, s)
                }, 0),
              r.copy(s)
            )
          }),
          (t.beforeSendMsg = function() {}),
          (t.afterSendMsg = function() {}),
          (t.formatReturnMsg = function(e) {
            const t = this
            return (
              (e = r.copy(e)),
              t.protocol.completeMsg(e),
              (e.status = 'sending'),
              (e = t.message.reverse(e))
            )
          }),
          (t.resendMsg = function(e) {
            const t = this
            return (
              r.verifyOptions(e, 'msg'),
              t.trimMsgFlag(e),
              (e.resend = !0),
              t._sendMsgByType(e)
            )
          }),
          (t.forwardMsg = function(e) {
            const t = this
            return (
              r.verifyOptions(e, 'msg'),
              t.beforeForwardMsg(e),
              t.trimMsgFlag(e),
              (e.forward = !0),
              (e.msg.idClient = r.guid()),
              t._sendMsgByType(e)
            )
          }),
          (t.trimMsgFlag = function(e) {
            e &&
              e.msg &&
              ((e.msg = r.copy(e.msg)),
              delete e.msg.resend,
              delete e.msg.forward)
          }),
          (t.beforeForwardMsg = function() {}),
          (t._sendMsgByType = function(e) {
            const t = this
            switch ((r.verifyOptions(e, 'msg'),
            r.verifyParamValid('msg.type', e.msg.type, t.message.validTypes),
            r.merge(e, e.msg),
            e.type)) {
              case 'text':
                return t.sendText(e)
              case 'image':
              case 'audio':
              case 'video':
              case 'file':
                return t.sendFile(e)
              case 'geo':
                return t.sendGeo(e)
              case 'custom':
                return t.sendCustomMsg(e)
              case 'tip':
                return t.sendTipMsg(e)
              default:
                throw new i(`不能发送类型为 ${e.type} 的消息`)
            }
          }),
          (t.parseRobotTemplate = function(e) {
            function t(e) {
              if (e.link) {
                let t = e.link
                Array.isArray(t) || (t = [t]),
                  (t = t.map(e => {
                    return (
                      e.image && (e.image = r(e)),
                      e.text && (e.text = n(e)),
                      e._type === 'url'
                        ? ((e.type = 'url'),
                          (e.style = e._style || ''),
                          (e.target = e._target),
                          delete e._target,
                          delete e._style)
                        : e._type === 'block' &&
                          ((e.type = 'block'),
                          (e.style = e._style || ''),
                          (e.params = e._params || ''),
                          (e.target = e._target),
                          delete e._params,
                          delete e._target,
                          delete e._style),
                      delete e._type,
                      e
                    )
                  })),
                  (e.link = t)
              }
              return e.link
            }
            function n(e) {
              return (
                Array.isArray(e.text) || (e.text = [e.text]),
                (e.text = e.text.map(e => {
                  return { type: 'text', name: e._name, text: e.__text }
                })),
                e.text
              )
            }
            function r(e) {
              return (
                Array.isArray(e.image) || (e.image = [e.image]),
                (e.image = e.image.map(e => {
                  return { type: 'image', name: e._name, url: e._url }
                })),
                e.image
              )
            }
            if (/<template[^>\/]+\/>/.test(e))
              return { raw: e, json: [{ type: 'text', name: '', text: '' }] }
            if (!/<template[^>\/]+>/.test(e))
              return { raw: e, json: [{ type: 'text', name: '', text: e }] }
            const i = new o({ escapeMode: !1 })
            e = e.replace(/<template [^>]+>/, '<template>')
            let a = i.xml2js(e)
            ;(a = a.template.LinearLayout), Array.isArray(a) || (a = [a])
            let s = []
            return (
              (a = a.forEach(e => {
                e.image && (s = s.concat(r(e))),
                  e.text && (s = s.concat(n(e))),
                  e.link && (s = s.concat(t(e)))
              })),
              { raw: e, json: s }
            )
          })
      }.call(t, n(9)))
    },
    function(e, t, n) {
      let r = n(1),
        o = n(14).fn,
        i = n(51)
      ;(o.getSimpleNosToken = function() {
        const e =
          arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
        return (
          (e.num = 1),
          r.verifyOptions(e),
          this.cbAndSendCmd('getSimpleNosToken', e)
        )
      }),
        (o.getNosToken = function(e) {
          this.sendCmd(
            'getNosToken',
            {
              responseBody: e.responseBody,
            },
            e.callback
          )
        }),
        (o.packFileDownloadName = function(e) {
          r.verifyOptions(e, 'url name')
          const t = e.url
          return `${t + r.genUrlSep(t)}download=${encodeURIComponent(e.name)}`
        }),
        (o.audioToMp3 = function(e) {
          r.verifyOptions(e, 'url')
          const t = e.url
          return `${t + r.genUrlSep(t)}audioTrans&type=mp3`
        }),
        (o.stripImageMeta = function(e) {
          return this.beforeProcessImage(e, 'stripmeta')
        }),
        (o.qualityImage = function(e) {
          return this.beforeProcessImage(e, 'quality')
        }),
        (o.interlaceImage = function(e) {
          return this.beforeProcessImage(e, 'interlace')
        }),
        (o.rotateImage = function(e) {
          return this.beforeProcessImage(e, 'rotate')
        }),
        (o.blurImage = function(e) {
          return this.beforeProcessImage(e, 'blur')
        }),
        (o.cropImage = function(e) {
          return this.beforeProcessImage(e, 'crop')
        }),
        (o.thumbnailImage = function(e) {
          return this.beforeProcessImage(e, 'thumbnail')
        }),
        (o.beforeProcessImage = function(e, t) {
          const n = r.copy(e)
          return (n.type = t), (e.ops = [n]), this.processImage(e)
        }),
        (o.processImage = function(e) {
          const t = this
          r.verifyOptions(e, 'url ops'),
            r.verifyParamType('ops', e.ops, 'array')
          const n = e.ops.map(e => {
            return (
              r.verifyOptions(e, 'type'),
              r.verifyParamValid('type', e.type, i.validTypes),
              t[`gen${e.type.slice(0, 1).toUpperCase()}${e.type.slice(1)}Op`](e)
            )
          })
          t.processCallback(e),
            t.sendCmd('processImage', { url: e.url, imageOps: n }, e.callback)
        }),
        (o.genStripmetaOp = function(e) {
          return new i({ type: e.type, stripmeta: e.strip ? 1 : 0 })
        }),
        (o.genQualityOp = function(e) {
          r.verifyOptions(e, 'quality'),
            r.verifyParamType('quality', e.quality, 'number'),
            r.verifyParamMin('quality', e.quality, 0),
            r.verifyParamMax('quality', e.quality, 100)
          const t = Math.round(e.quality)
          return new i({ type: e.type, qualityQuality: t })
        }),
        (o.genInterlaceOp = function(e) {
          return new i({ type: e.type })
        }),
        (o.genRotateOp = function(e) {
          for (
            r.verifyOptions(e, 'angle'),
              r.verifyParamType('angle', e.angle, 'number');
            e.angle < 0;

          )
            e.angle += 360
          e.angle %= 360
          const t = Math.round(e.angle)
          return new i({ type: e.type, rotateAngle: t })
        }),
        (o.genBlurOp = function(e) {
          r.verifyOptions(e, 'radius sigma'),
            r.verifyParamType('radius', e.radius, 'number'),
            r.verifyParamMin('radius', e.radius, 1),
            r.verifyParamMax('radius', e.radius, 50),
            r.verifyParamType('sigma', e.sigma, 'number'),
            r.verifyParamMin('sigma', e.sigma, 0)
          let t = Math.round(e.radius),
            n = Math.round(e.sigma)
          return new i({ type: e.type, blurRadius: t, blurSigma: n })
        }),
        (o.genCropOp = function(e) {
          r.verifyOptions(e, 'x y width height'),
            r.verifyParamType('x', e.x, 'number'),
            r.verifyParamMin('x', e.x, 0),
            r.verifyParamType('y', e.y, 'number'),
            r.verifyParamMin('y', e.y, 0),
            r.verifyParamType('width', e.width, 'number'),
            r.verifyParamMin('width', e.width, 0),
            r.verifyParamType('height', e.height, 'number'),
            r.verifyParamMin('height', e.height, 0)
          let t = Math.round(e.x),
            n = Math.round(e.y),
            o = Math.round(e.width),
            a = Math.round(e.height)
          return new i({
            type: e.type,
            cropX: t,
            cropY: n,
            cropWidth: o,
            cropHeight: a,
          })
        }),
        (o.genThumbnailOp = (function() {
          const e = { cover: 'z', contain: 'x', crop: 'y' }
          return function(t) {
            r.verifyOptions(t, 'mode'),
              r.verifyParamValid('mode', t.mode, Object.keys(e)),
              t.mode === 'contain'
                ? r.verifyParamAtLeastPresentOne(t, 'width height')
                : r.verifyOptions(t, 'width height'),
              r.undef(t.width) && (t.width = 0),
              r.undef(t.height) && (t.height = 0),
              r.verifyParamType('width', t.width, 'number'),
              r.verifyParamMin('width', t.width, 0),
              r.verifyParamType('height', t.height, 'number'),
              r.verifyParamMin('height', t.height, 0)
            let n = Math.round(t.width),
              o = Math.round(t.height),
              a = new i({
                type: t.type,
                thumbnailMode: e[t.mode],
                thumbnailWidth: n,
                thumbnailHeight: o,
              })
            if (t.mode === 'crop' && r.notundef(t.axis)) {
              r.undef(t.axis.x) && (t.axis.x = 5),
                r.undef(t.axis.y) && (t.axis.y = 5),
                r.verifyParamMin('axis.x', t.axis.x, 0),
                r.verifyParamMax('axis.x', t.axis.x, 10),
                r.verifyParamMin('axis.y', t.axis.y, 0),
                r.verifyParamMax('axis.y', t.axis.y, 10)
              let s = Math.round(t.axis.x),
                c = Math.round(t.axis.y)
              ;(a.thumbnailAxisX = s), (a.thumbnailAxisY = c)
            }
            return (
              r.notundef(t.enlarge) &&
                (r.verifyParamType('enlarge', t.enlarge, 'boolean'),
                t.enlarge && (a.thumbnailEnlarge = 1)),
              a
            )
          }
        })())
    },
    function(e, t, n) {
      let r =
          typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'
            ? function(e) {
                return typeof e
              }
            : function(e) {
                return e &&
                  typeof Symbol === 'function' &&
                  e.constructor === Symbol &&
                  e !== Symbol.prototype
                  ? 'symbol'
                  : typeof e
              },
        o = n(50),
        i = n(1),
        a = n(14).fn
      ;(a.viewImageSync = function(e) {
        const t = this.options
        i.verifyOptions(e, 'url')
        let n = e.url,
          a = (0, o.url2object)(n),
          s = a.protocol,
          c = a.hostname,
          u = a.path,
          l = a.query
        if (
          (typeof e.strip === 'boolean' && (l.stripmeta = e.strip ? 1 : 0),
          typeof e.quality === 'number' &&
            (i.verifyParamMin('quality', e.quality, 0),
            i.verifyParamMax('quality', e.quality, 100),
            (l.quality = Math.round(e.quality))),
          typeof e.interlace === 'boolean' &&
            (l.interlace = e.interlace ? 1 : 0),
          typeof e.rotate === 'number' && (l.rotate = Math.round(e.rotate)),
          r(e.thumbnail) === 'object')
        ) {
          let p = e.thumbnail.mode || 'crop',
            f = e.thumbnail.width,
            d = e.thumbnail.height
          if (f >= 0 && d >= 0 && f < 4096 && d < 4096 && (f > 0 || d > 0)) {
            switch (p) {
              case 'crop':
                p = 'y'
                break
              case 'contain':
                p = 'x'
                break
              case 'cover':
                p = 'z'
                break
              default:
                p = 'x'
            }
            l.thumbnail = `${f}${p}${d}`
          }
        }
        if (t.downloadUrl) {
          let m = (0, o.url2object)(e.url),
            h = t.downloadUrl,
            y = m.path,
            g = y.indexOf('/')
          if (g !== -1) {
            let v = y.substring(0, g),
              b = y.substring(g + 1)
            h = h.replace('{bucket}', v).replace('{object}', b)
          }
          const w = (0, o.url2object)(h)
          return (0, o.object2url)({
            protocol: w.protocol,
            hostname: w.hostname,
            path: w.path,
            query: i.merge(w.query, l),
          })
        }
        return (0, o.object2url)({
          protocol: s,
          hostname: c,
          path: u,
          query: l,
        })
      }),
        (a.viewImageStripMeta = function(e) {
          i.verifyOptions(e, 'url strip'),
            i.verifyParamType('strip', e.strip, 'boolean')
          let t = `stripmeta=${e.strip ? 1 : 0}`,
            n = (0, o.genUrlSep)(e.url)
          return e.url + n + t
        }),
        (a.viewImageQuality = function(e) {
          i.verifyOptions(e, 'url quality'),
            i.verifyParamType('quality', e.quality, 'number'),
            i.verifyParamMin('quality', e.quality, 0),
            i.verifyParamMax('quality', e.quality, 100)
          let t = Math.round(e.quality),
            n = `quality=${t}`,
            r = (0, o.genUrlSep)(e.url)
          return e.url + r + n
        }),
        (a.viewImageInterlace = function(e) {
          i.verifyOptions(e, 'url')
          let t = 'interlace=1',
            n = (0, o.genUrlSep)(e.url)
          return e.url + n + t
        }),
        (a.viewImageRotate = function(e) {
          for (
            i.verifyOptions(e, 'url angle'),
              i.verifyParamType('angle', e.angle, 'number');
            e.angle < 0;

          )
            e.angle += 360
          e.angle %= 360
          let t = Math.round(e.angle),
            n = `rotate=${t}`,
            r = (0, o.genUrlSep)(e.url)
          return e.url + r + n
        }),
        (a.viewImageBlur = function(e) {
          i.verifyOptions(e, 'url radius sigma'),
            i.verifyParamType('radius', e.radius, 'number'),
            i.verifyParamMin('radius', e.radius, 1),
            i.verifyParamMax('radius', e.radius, 50),
            i.verifyParamType('sigma', e.sigma, 'number'),
            i.verifyParamMin('sigma', e.sigma, 0)
          let t = Math.round(e.radius),
            n = Math.round(e.sigma),
            r = `blur=${t}x${n}`,
            a = (0, o.genUrlSep)(e.url)
          return e.url + a + r
        }),
        (a.viewImageCrop = function(e) {
          i.verifyOptions(e, 'url x y width height'),
            i.verifyParamType('x', e.x, 'number'),
            i.verifyParamMin('x', e.x, 0),
            i.verifyParamType('y', e.y, 'number'),
            i.verifyParamMin('y', e.y, 0),
            i.verifyParamType('width', e.width, 'number'),
            i.verifyParamMin('width', e.width, 0),
            i.verifyParamType('height', e.height, 'number'),
            i.verifyParamMin('height', e.height, 0)
          let t = Math.round(e.x),
            n = Math.round(e.y),
            r = Math.round(e.width),
            a = Math.round(e.height),
            s = `crop=${t}_${n}_${r}_${a}`,
            c = (0, o.genUrlSep)(e.url)
          return e.url + c + s
        }),
        (a.viewImageThumbnail = (function() {
          const e = { cover: 'z', contain: 'x', crop: 'y' }
          return function(t) {
            i.verifyOptions(t, 'url mode'),
              i.verifyParamValid('mode', t.mode, Object.keys(e)),
              t.mode === 'contain'
                ? i.verifyParamAtLeastPresentOne(t, 'width height')
                : i.verifyOptions(t, 'width height'),
              i.undef(t.width) && (t.width = 0),
              i.undef(t.height) && (t.height = 0),
              i.verifyParamType('width', t.width, 'number'),
              i.verifyParamMin('width', t.width, 0),
              i.verifyParamType('height', t.height, 'number'),
              i.verifyParamMin('height', t.height, 0)
            let n = Math.round(t.width),
              r = Math.round(t.height),
              a = `thumbnail=${n}${e[t.mode]}${r}`
            if (t.mode === 'crop' && i.notundef(t.axis)) {
              i.undef(t.axis.x) && (t.axis.x = 5),
                i.undef(t.axis.y) && (t.axis.y = 5),
                i.verifyParamMin('axis.x', t.axis.x, 0),
                i.verifyParamMax('axis.x', t.axis.x, 10),
                i.verifyParamMin('axis.y', t.axis.y, 0),
                i.verifyParamMax('axis.y', t.axis.y, 10)
              let s = Math.round(t.axis.x),
                c = Math.round(t.axis.y)
              a = `${a}&axis=${s}_${c}`
            }
            i.notundef(t.enlarge) &&
              (i.verifyParamType('enlarge', t.enlarge, 'boolean'),
              t.enlarge && (a += '&enlarge=1'))
            const u = (0, o.genUrlSep)(t.url)
            return t.url + u + a
          }
        })())
    },
    ,
    function(e, t, n) {
      function r(e) {
        const t = this
        i(e.name) && (t.name = `${e.name}`),
          i(e.announcement) && (t.announcement = `${e.announcement}`),
          i(e.broadcastUrl) && (t.broadcastUrl = `${e.broadcastUrl}`),
          i(e.custom) && (t.custom = `${e.custom}`),
          i(e.queuelevel) && (t.queuelevel = parseInt(e.queuelevel))
      }
      var o = n(1),
        i = o.notundef,
        a = o.undef
      ;(r.reverse = function(e) {
        const t = o.copy(e)
        return (
          a(t.announcement) && (t.announcement = ''),
          a(t.broadcastUrl) && (t.broadcastUrl = ''),
          a(t.custom) && (t.custom = ''),
          i(t.createTime) && (t.createTime = +t.createTime),
          i(t.updateTime) && (t.updateTime = +t.updateTime),
          i(t.onlineMemberNum) && (t.onlineMemberNum = +t.onlineMemberNum),
          i(t.mute) && (t.mute = t.mute === '1'),
          t
        )
      }),
        (e.exports = r)
    },
    ,
    function(e, t, n) {
      let r = n(17).fn,
        o = n(5),
        i = n(12),
        a = n(29),
        s = n(15),
        c = n(3),
        u = n(1),
        l = u.notundef
      ;(r.login = function() {
        const e = this
        e.sendCmd('login', e.assembleLogin(), e.onLogin.bind(e)),
          (e.autoconnect = !1)
      }),
        (r.genSessionKey = (function() {
          const e = {}
          return function() {
            let t = this,
              n = t.name,
              r = (e[n] = e[n] || u.guid())
            return r
          }
        })()),
        (r.assembleIMLogin = function() {
          let e = this,
            t = e.options,
            n = t.account,
            r = e.autoconnect ? 0 : 1
          return {
            appLogin: r,
            appKey: t.appKey,
            account: n,
            token: t.token,
            sdkVersion: c.info.sdkVersion,
            protocolVersion: c.info.protocolVersion,
            os: i.os.toString(),
            browser: `${i.name} ${i.version}`,
            session: e.genSessionKey(),
            deviceId: s.deviceId,
          }
        }),
        (r.onLogin = function(e, t) {
          const n = this
          ;(n.loginResult = t),
            e ? n.onAuthError(e) : (n.startHeartbeat(), n.afterLogin(t))
        }),
        (r.afterLogin = u.emptyFunc),
        (r.notifyLogin = function() {
          let e = this,
            t = e.loginResult
          e.logger.info('link::notifyLogin: on connect', t),
            e.options.onconnect(t)
        }),
        (r.logout = function() {
          const e = this
          if (e.isConnected()) {
            const t = new o('主动退出', 'logout')
            e.onAuthError(t)
          }
        }),
        (r.onKicked = function(e) {
          let t = this,
            n = e.content,
            r = n.from,
            i = n.reason,
            s = n.custom,
            c = {
              reason: t.kickedReasons[i] || 'unknown',
              message: t.kickedMessages[i] || '未知原因',
            }
          if (
            (l(r) && (c.from = a.reverseType(r)),
            l(s) && (c.custom = s),
            t.shouldNotifyKicked(c))
          ) {
            const p = new o('被踢了', 'kicked')
            u.merge(p, c), t.onAuthError(p)
          } else
            t.logger.warn('link::onKicked: silentlyKick'),
              (t.shouldReconnect = !0),
              (t.hasNotifyDisconnected = !0),
              t.disconnectSocket()
        }),
        (r.shouldNotifyKicked = function(e) {
          return e.reason !== 'silentlyKick'
        }),
        (r.onAuthError = function(e) {
          const t = this
          ;(t.shouldReconnect = !1),
            t.markAllCallbackInvalid(e || o.newConnectionError()),
            t.notifyDisconnect(e)
        })
    },
    function(e, t, n) {
      ;(function(e) {
        let t = n(17).fn,
          r = n(5),
          o = n(67),
          i = n(28),
          a = n(3),
          s = n(1)
        ;(t.initConnect = function() {
          const e = this
          ;(e.socket = null),
            (e.retryCount = 0),
            (e.connecting = !1),
            (e.shouldReconnect = !0),
            (e.hasNotifyDisconnected = !1)
        }),
          (t.resetConnect = function() {
            let e = this,
              t = e.options
            s.notundef(t.needReconnect)
              ? (s.verifyParamType('needReconnect', t.needReconnect, 'boolean'),
                (e.needReconnect = t.needReconnect))
              : (e.needReconnect = !0),
              e.logger.log(
                `link::resetConnect: needReconnect ${e.needReconnect}`
              ),
              s.notundef(t.reconnectionAttempts) &&
                s.verifyParamType(
                  'reconnectionAttempts',
                  t.reconnectionAttempts,
                  'number'
                ),
              (e.reconnectionAttempts = t.reconnectionAttempts || 1 / 0),
              (e.backoff = new o({
                min: a.reconnectionDelay,
                max: a.reconnectionDelayMax,
                jitter: a.reconnectionJitter,
              }))
          }),
          (t.connect = function() {
            const e = this
            if (e.isConnected() || e.connecting)
              return void e.logger.warn(
                'link::connect: already connected or connecting'
              )
            if (((e.connecting = !0), (e.hasNotifyDisconnected = !1), e.socket))
              e.logger.info('link::connect: try connecting...'),
                e.socket.socket.connect()
            else {
              const t = e.getNextSocketUrl()
              t ? e.connectToUrl(t) : e.refreshSocketUrl()
            }
          }),
          (t.getNextSocketUrl = function() {
            return this.socketUrls.shift()
          }),
          (t.isConnected = function() {
            const e = this
            return !!e.socket && !!e.socket.socket && e.socket.socket.connected
          }),
          (t.connectToUrl = function(t) {
            const n = this
            if ((n.logger.log(`link::connectToUrl: ${t}`), e.env.WEIXIN_APP)) {
              if (!window.location) {
                const r = t.split(':')
                window.location = {
                  protocol: r[0],
                  hostname: r[1].slice(2),
                  port: r[2],
                }
              }
              this.options.transports = ['websocket']
            }
            const o = this.options.transports || ['websocket', 'xhr-polling']
            ;(n.socket = i.connect(t, {
              transports: o,
              reconnect: !1,
              'force new connection': !0,
              'connect timeout': a.connectTimeout,
            })),
              n.logger.info(
                `link::connectToUrl: socket url: ${t}, transports: ${JSON.stringify(
                  o
                )}`
              ),
              n.socket.on('connect', n.onConnect.bind(n)),
              n.socket.on('handshake_failed', n.onHandshakeFailed.bind(n)),
              n.socket.on('connect_failed', n.onConnectFailed.bind(n)),
              n.socket.on('error', n.onError.bind(n)),
              n.socket.on('message', n.onMessage.bind(n)),
              n.socket.on('disconnect', () => {
                n.logger.warn(
                  `link::connectToUrl: socket url: ${t}, disconnected`
                ),
                  n.onDisconnect(!0)
              })
          }),
          (t.disconnect = function() {
            const e = this
            e.isConnected() &&
              (e.logger.log('link::disconnect: start disconnecting'),
              e.logout())
          }),
          (t.onConnect = function() {
            const e = this
            e.backoff && e.backoff.reset(),
              (e.retryCount = 0),
              (e.connecting = !1),
              (e.shouldReconnect = !0),
              (e.hasNotifyDisconnected = !1),
              e.logger.log('link::onConnect: socket onconnected, start login'),
              e.login()
          }),
          (t.onHandshakeFailed = function() {
            this.logger.warn('link::onHandshakeFailed: shandshake failed'),
              this.onDisconnect()
          }),
          (t.onConnectFailed = function() {
            this.onDisconnect()
          }),
          (t.onError = function() {
            const e = arguments[0]
            e && this.onMiscError('link::onError:', new r(e))
          }),
          (t.onDisconnect = function() {
            let e =
                arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
              t = this
            ;(t.connected = e),
              (t.connecting = !1),
              t.markAllCallbackInvalid(r.newNetworkError()),
              t.stopHeartbeat(),
              t.reconnect()
          }),
          (t.willReconnect = function() {
            const e = this
            return (
              e.shouldReconnect &&
              e.needReconnect &&
              e.retryCount < e.reconnectionAttempts
            )
          }),
          (t.reconnect = function() {
            const e = this
            if (e.willReconnect()) {
              ;(e.socket = null),
                e.connected && (e.autoconnect = !0),
                e.retryCount++
              const t = e.backoff.duration()
              e.logger.info(
                `link::reconnect: will retry after ${t}ms, retryCount ${
                  e.retryCount
                }`
              ),
                e.options.onwillreconnect({
                  retryCount: e.retryCount,
                  duration: t,
                }),
                setTimeout(() => {
                  e.connect()
                }, t)
            } else e.notifyDisconnect()
          }),
          (t.notifyConnectError = function(e) {
            let t = this,
              n = r.newConnectError(e)
            t.logger.error('link::notifyConnectError:', n), t.options.onerror(n)
          }),
          (t.notifyDisconnect = function(e) {
            const t = this
            t.hasNotifyDisconnected ||
              ((t.hasNotifyDisconnected = !0),
              t.disconnectSocket(),
              (e = e || new r()),
              (e.retryCount = t.retryCount),
              (e.willReconnect = t.willReconnect()),
              t.backoff && t.backoff.reset(),
              (t.retryCount = 0),
              (t.connecting = !1),
              t.logger.info('link::notifyDisconnect: ondisconnected ', e),
              t.options.ondisconnect(e))
          }),
          (t.disconnectSocket = function() {
            const e = this
            if (e.isConnected())
              try {
                e.socket.disconnect(), (e.socket = null)
              } catch (t) {
                e.logger.info(
                  'link::disconnectSocket: disconnect failed, error ',
                  t
                )
              }
          })
      }.call(t, n(9)))
    },
    function(e, t, n) {
      let r = n(17).fn,
        o = n(3)
      ;(r.processLink = function(e) {
        switch (e.cmd) {
          case 'heartbeat':
        }
      }),
        (r.startHeartbeat = function() {
          const e = this
          e.stopHeartbeat(),
            (e.heartbeatTimer = setTimeout(() => {
              e.sendCmd('heartbeat', null, e.onHeartbeat.bind(e))
            }, o.heartbeatInterval))
        }),
        (r.stopHeartbeat = function() {
          const e = this
          e.heartbeatTimer &&
            (clearTimeout(e.heartbeatTimer), (e.heartbeatTimer = null))
        }),
        (r.onHeartbeat = function(e, t) {
          const n = this
          e
            ? n.onCustomError(
                'link::onHeartbeat: heartbeat error',
                'HEARTBEAT_ERROR',
                e
              )
            : n.startHeartbeat()
        }),
        (r.heartbeat = function() {})
    },
    function(e, t, n) {
      let r = n(17).fn,
        o = n(51)
      r.processMisc = function(e) {
        switch (e.cmd) {
          case 'getSimpleNosToken':
            e.error || (e.obj = e.content.nosTokens[0])
            break
          case 'getNosToken':
            e.error || (e.obj = e.content.nosToken)
            break
          case 'notifyUploadLog':
            e.error || this.emitAPI({ type: 'notifyUploadLog' })
            break
          case 'audioToText':
            e.error || (e.obj.text = e.content.text)
            break
          case 'processImage':
            ;(e.obj.imageOps = o.reverseImageOps(e.obj.imageOps)),
              e.error || (e.obj = { url: e.content.url })
        }
      }
    },
    function(e, t, n) {
      let r = n(1),
        o = n(52),
        i = r.merge({}, o.idMap, {
          chatroom: {
            id: 13,
            login: 2,
            kicked: 3,
            logout: 4,
            sendMsg: 6,
            msg: 7,
            getChatroomMembers: 8,
            getHistoryMsgs: 9,
            markChatroomMember: 11,
            closeChatroom: 12,
            getChatroom: 13,
            updateChatroom: 14,
            updateMyChatroomMemberInfo: 15,
            getChatroomMembersInfo: 16,
            kickChatroomMember: 17,
            updateChatroomMemberTempMute: 19,
            queueOffer: 20,
            queuePoll: 21,
            queueList: 22,
            peak: 23,
            queueDrop: 24,
            queueInit: 25,
          },
          user: { id: 3, syncRobot: 16 },
        }),
        a = r.merge({}, o.cmdConfig, {
          login: {
            sid: i.chatroom.id,
            cid: i.chatroom.login,
            params: [
              { type: 'byte', name: 'type' },
              { type: 'Property', name: 'login' },
              { type: 'Property', name: 'imLogin' },
            ],
          },
          logout: { sid: i.chatroom.id, cid: i.chatroom.logout },
          sendMsg: {
            sid: i.chatroom.id,
            cid: i.chatroom.sendMsg,
            params: [{ type: 'Property', name: 'msg' }],
          },
          getChatroomMembers: {
            sid: i.chatroom.id,
            cid: i.chatroom.getChatroomMembers,
            params: [
              { type: 'byte', name: 'type' },
              { type: 'long', name: 'time' },
              { type: 'int', name: 'limit' },
            ],
          },
          getHistoryMsgs: {
            sid: i.chatroom.id,
            cid: i.chatroom.getHistoryMsgs,
            params: [
              { type: 'long', name: 'timetag' },
              { type: 'int', name: 'limit' },
              { type: 'bool', name: 'reverse' },
              { type: 'LongArray', name: 'msgTypes' },
            ],
          },
          markChatroomMember: {
            sid: i.chatroom.id,
            cid: i.chatroom.markChatroomMember,
            params: [
              { type: 'string', name: 'account' },
              { type: 'int', name: 'type' },
              { type: 'bool', name: 'isAdd' },
              { type: 'int', name: 'level' },
              { type: 'string', name: 'custom' },
            ],
          },
          closeChatroom: {
            sid: i.chatroom.id,
            cid: i.chatroom.closeChatroom,
            params: [{ type: 'string', name: 'custom' }],
          },
          getChatroom: { sid: i.chatroom.id, cid: i.chatroom.getChatroom },
          updateChatroom: {
            sid: i.chatroom.id,
            cid: i.chatroom.updateChatroom,
            params: [
              { type: 'Property', name: 'chatroom' },
              { type: 'bool', name: 'needNotify' },
              { type: 'String', name: 'custom' },
            ],
          },
          updateMyChatroomMemberInfo: {
            sid: i.chatroom.id,
            cid: i.chatroom.updateMyChatroomMemberInfo,
            params: [
              { type: 'Property', name: 'chatroomMember' },
              { type: 'bool', name: 'needNotify' },
              { type: 'String', name: 'custom' },
              { type: 'bool', name: 'needSave' },
            ],
          },
          getChatroomMembersInfo: {
            sid: i.chatroom.id,
            cid: i.chatroom.getChatroomMembersInfo,
            params: [{ type: 'StrArray', name: 'accounts' }],
          },
          kickChatroomMember: {
            sid: i.chatroom.id,
            cid: i.chatroom.kickChatroomMember,
            params: [
              { type: 'string', name: 'account' },
              { type: 'string', name: 'custom' },
            ],
          },
          updateChatroomMemberTempMute: {
            sid: i.chatroom.id,
            cid: i.chatroom.updateChatroomMemberTempMute,
            params: [
              { type: 'String', name: 'account' },
              { type: 'long', name: 'duration' },
              { type: 'bool', name: 'needNotify' },
              { type: 'String', name: 'custom' },
            ],
          },
          queueOffer: {
            sid: i.chatroom.id,
            cid: i.chatroom.queueOffer,
            params: [
              { type: 'string', name: 'elementKey' },
              { type: 'string', name: 'elementValue' },
              { type: 'bool', name: 'transient' },
            ],
          },
          queuePoll: {
            sid: i.chatroom.id,
            cid: i.chatroom.queuePoll,
            params: [{ type: 'string', name: 'elementKey' }],
          },
          queueList: { sid: i.chatroom.id, cid: i.chatroom.queueList },
          peak: { sid: i.chatroom.id, cid: i.chatroom.peak },
          queueDrop: { sid: i.chatroom.id, cid: i.chatroom.queueDrop },
          queueInit: {
            sid: i.chatroom.id,
            cid: i.chatroom.queueInit,
            params: [{ type: 'int', name: 'limit' }],
          },
          syncRobot: {
            sid: i.user.id,
            cid: i.user.syncRobot,
            params: [{ type: 'long', name: 'timetag' }],
          },
        }),
        s = 'chatroom',
        c = r.merge({}, o.packetConfig, {
          '4_10': { service: 'notify' },
          '4_11': { service: 'notify' },
          '3_16': {
            service: s,
            cmd: 'syncRobot',
            response: [
              { type: 'PropertyArray', name: 'robots', entity: 'robot' },
            ],
          },
          '13_2': {
            service: s,
            cmd: 'login',
            response: [
              { type: 'Property', name: 'chatroom' },
              { type: 'Property', name: 'chatroomMember' },
            ],
          },
          '13_3': {
            service: s,
            cmd: 'kicked',
            response: [
              { type: 'Number', name: 'reason' },
              { type: 'String', name: 'custom' },
            ],
          },
          '13_4': { service: s, cmd: 'logout' },
          '13_6': {
            service: s,
            cmd: 'sendMsg',
            response: [{ type: 'Property', name: 'msg' }],
          },
          '13_7': {
            service: s,
            cmd: 'msg',
            response: [{ type: 'Property', name: 'msg' }],
          },
          '13_8': {
            service: s,
            cmd: 'getChatroomMembers',
            response: [
              {
                type: 'PropertyArray',
                name: 'members',
                entity: 'chatroomMember',
              },
            ],
          },
          '13_9': {
            service: s,
            cmd: 'getHistoryMsgs',
            response: [{ type: 'PropertyArray', name: 'msgs', entity: 'msg' }],
          },
          '13_11': {
            service: s,
            cmd: 'markChatroomMember',
            response: [{ type: 'Property', name: 'chatroomMember' }],
          },
          '13_12': { service: s, cmd: 'closeChatroom' },
          '13_13': {
            service: s,
            cmd: 'getChatroom',
            response: [{ type: 'Property', name: 'chatroom' }],
          },
          '13_14': { service: s, cmd: 'updateChatroom' },
          '13_15': { service: s, cmd: 'updateMyChatroomMemberInfo' },
          '13_16': {
            service: s,
            cmd: 'getChatroomMembersInfo',
            response: [
              {
                type: 'PropertyArray',
                name: 'members',
                entity: 'chatroomMember',
              },
            ],
          },
          '13_17': { service: s, cmd: 'kickChatroomMember' },
          '13_19': { service: s, cmd: 'updateChatroomMemberTempMute' },
          '13_20': { service: s, cmd: 'queueOffer' },
          '13_21': {
            service: s,
            cmd: 'queuePoll',
            response: [
              { type: 'String', name: 'elementKey' },
              { type: 'String', name: 'elementValue' },
            ],
          },
          '13_22': {
            service: s,
            cmd: 'queueList',
            response: [{ type: 'KVArray', name: 'queueList' }],
          },
          '13_23': {
            service: s,
            cmd: 'peak',
            response: [
              { type: 'String', name: 'elementKey' },
              { type: 'String', name: 'elementValue' },
            ],
          },
          '13_24': { service: s, cmd: 'queueDrop' },
          '13_25': { service: s, cmd: 'queueInit' },
        })
      e.exports = { idMap: i, cmdConfig: a, packetConfig: c }
    },
    function(e, t) {
      e.exports = {
        imLogin: {
          os: 4,
          sdkVersion: 6,
          appLogin: 8,
          protocolVersion: 9,
          deviceId: 13,
          appKey: 18,
          account: 19,
          browser: 24,
          session: 26,
          token: 1e3,
        },
        nosToken: { objectName: 1, token: 2, bucket: 3, expireTime: 4 },
        audioToText: { url: 2 },
        imageOp: {
          type: 0,
          stripmeta: 1,
          typeType: 2,
          blurRadius: 3,
          blurSigma: 4,
          qualityQuality: 5,
          cropX: 6,
          cropY: 7,
          cropWidth: 8,
          cropHeight: 9,
          rotateAngle: 10,
          pixelPixel: 11,
          thumbnailMode: 12,
          thumbnailWidth: 13,
          thumbnailHeight: 14,
          thumbnailAxisX: 15,
          thumbnailAxisY: 16,
          thumbnailCenterX: 17,
          thumbnailCenterY: 18,
          thumbnailEnlarge: 19,
          thumbnailToStatic: 20,
          watermarkType: 21,
          watermarkGravity: 22,
          watermarkDissolve: 23,
          watermarkDx: 24,
          watermarkDy: 25,
          watermarkImage: 26,
          watermarkText: 27,
          watermarkFont: 28,
          watermarkFontSize: 29,
          watermarkFontColor: 30,
          interlace: 31,
        },
        robot: {
          account: 4,
          nick: 5,
          avatar: 6,
          intro: 7,
          config: 8,
          valid: 9,
          createTime: 10,
          updateTime: 11,
          custid: 12,
          botid: 13,
          bindTime: 14,
        },
        login: {
          appKey: 1,
          account: 2,
          deviceId: 3,
          chatroomId: 5,
          chatroomNick: 20,
          chatroomAvatar: 21,
          chatroomCustom: 22,
          chatroomEnterCustom: 23,
          session: 26,
          isAnonymous: 38,
        },
        chatroom: {
          id: 1,
          name: 3,
          announcement: 4,
          broadcastUrl: 5,
          custom: 12,
          createTime: 14,
          updateTime: 15,
          queuelevel: 16,
          creator: 100,
          onlineMemberNum: 101,
          mute: 102,
        },
        msg: {
          idClient: 1,
          type: 2,
          attach: 3,
          custom: 4,
          resend: 5,
          userUpdateTime: 6,
          fromNick: 7,
          fromAvatar: 8,
          fromCustom: 9,
          yidunEnable: 10,
          antiSpamContent: 11,
          skipHistory: 12,
          body: 13,
          antiSpamBusinessId: 14,
          time: 20,
          from: 21,
          chatroomId: 22,
          fromClientType: 23,
        },
        chatroomMember: {
          chatroomId: 1,
          account: 2,
          type: 3,
          level: 4,
          nick: 5,
          avatar: 6,
          custom: 7,
          online: 8,
          guest: 9,
          enterTime: 10,
          blacked: 12,
          gaged: 13,
          valid: 14,
          updateTime: 15,
          tempMuted: 16,
          tempMuteDuration: 17,
        },
      }
    },
    function(e, t) {
      e.exports = {
        nosToken: { objectName: 1, token: 2, bucket: 3, expireTime: 4 },
        audioToText: { url: 2 },
        imageOp: {
          type: 0,
          stripmeta: 1,
          typeType: 2,
          blurRadius: 3,
          blurSigma: 4,
          qualityQuality: 5,
          cropX: 6,
          cropY: 7,
          cropWidth: 8,
          cropHeight: 9,
          rotateAngle: 10,
          pixelPixel: 11,
          thumbnailMode: 12,
          thumbnailWidth: 13,
          thumbnailHeight: 14,
          thumbnailAxisX: 15,
          thumbnailAxisY: 16,
          thumbnailCenterX: 17,
          thumbnailCenterY: 18,
          thumbnailEnlarge: 19,
          thumbnailToStatic: 20,
          watermarkType: 21,
          watermarkGravity: 22,
          watermarkDissolve: 23,
          watermarkDx: 24,
          watermarkDy: 25,
          watermarkImage: 26,
          watermarkText: 27,
          watermarkFont: 28,
          watermarkFontSize: 29,
          watermarkFontColor: 30,
          interlace: 31,
        },
        robot: {
          account: 4,
          nick: 5,
          avatar: 6,
          intro: 7,
          config: 8,
          valid: 9,
          createTime: 10,
          updateTime: 11,
          custid: 12,
          botid: 13,
          bindTime: 14,
        },
        login: {
          os: 4,
          sdkVersion: 6,
          appLogin: 8,
          protocolVersion: 9,
          deviceId: 13,
          appKey: 18,
          account: 19,
          browser: 24,
          session: 26,
          token: 1e3,
        },
        loginRes: {
          lastLoginDeviceId: 17,
          connectionId: 102,
          ip: 103,
          port: 104,
          country: 106,
        },
        loginPort: {
          type: 3,
          os: 4,
          mac: 5,
          deviceId: 13,
          account: 19,
          connectionId: 102,
          ip: 103,
          time: 109,
        },
        sync: {
          myInfo: 1,
          offlineMsgs: 2,
          teams: 3,
          netcallMsgs: 6,
          roamingMsgs: 7,
          relations: 9,
          friends: 11,
          sessions: 12,
          friendUsers: 13,
          msgReceipts: 14,
          myTeamMembers: 15,
          donnop: 16,
          deleteMsg: 17,
          sessionAck: 18,
          robots: 19,
          broadcastMsgs: 20,
          filterMsgs: 100,
        },
        donnop: { open: 1 },
        team: {
          teamId: 1,
          name: 3,
          type: 4,
          owner: 5,
          level: 6,
          selfCustom: 7,
          valid: 8,
          memberNum: 9,
          memberUpdateTime: 10,
          createTime: 11,
          updateTime: 12,
          validToCurrentUser: 13,
          intro: 14,
          announcement: 15,
          joinMode: 16,
          bits: 17,
          custom: 18,
          serverCustom: 19,
          avatar: 20,
          beInviteMode: 21,
          inviteMode: 22,
          updateTeamMode: 23,
          updateCustomMode: 24,
          mute: 100,
        },
        teamMember: {
          teamId: 1,
          account: 3,
          type: 4,
          nickInTeam: 5,
          bits: 7,
          active: 8,
          valid: 9,
          joinTime: 10,
          updateTime: 11,
          custom: 12,
          mute: 13,
        },
        msg: {
          scene: 0,
          to: 1,
          from: 2,
          fromClientType: 4,
          fromDeviceId: 5,
          fromNick: 6,
          time: 7,
          type: 8,
          body: 9,
          attach: 10,
          idClient: 11,
          idServer: 12,
          resend: 13,
          userUpdateTime: 14,
          custom: 15,
          pushPayload: 16,
          pushContent: 17,
          apnsAccounts: 18,
          apnsContent: 19,
          apnsForcePush: 20,
          yidunEnable: 21,
          antiSpamContent: 22,
          antiSpamBusinessId: 23,
          isHistoryable: 100,
          isRoamingable: 101,
          isSyncable: 102,
          isMuted: 104,
          cc: 105,
          isPushable: 107,
          isOfflinable: 108,
          isUnreadable: 109,
          needPushNick: 110,
        },
        msgReceipt: { to: 1, from: 2, time: 7, idClient: 11 },
        sysMsg: {
          time: 0,
          type: 1,
          to: 2,
          from: 3,
          ps: 4,
          attach: 5,
          idServer: 6,
          sendToOnlineUsersOnly: 7,
          apnsText: 8,
          pushPayload: 9,
          deletedIdClient: 10,
          deletedIdServer: 11,
          yidunEnable: 12,
          antiSpamContent: 13,
          deletedMsgTime: 14,
          deletedMsgFromNick: 15,
          opeAccount: 16,
          cc: 105,
          isPushable: 107,
          isUnreadable: 109,
          needPushNick: 110,
        },
        broadcastMsg: {
          broadcastId: 1,
          fromAccid: 2,
          fromUid: 3,
          timestamp: 4,
          body: 5,
        },
        friend: {
          account: 4,
          flag: 5,
          beflag: 6,
          source: 7,
          alias: 8,
          bits: 9,
          custom: 10,
          createTime: 11,
          updateTime: 12,
        },
        user: {
          account: 1,
          nick: 3,
          avatar: 4,
          sign: 5,
          gender: 6,
          email: 7,
          birth: 8,
          tel: 9,
          custom: 10,
          createTime: 12,
          updateTime: 13,
        },
        specialRelation: {
          account: 0,
          isMuted: 1,
          isBlacked: 2,
          createTime: 3,
          updateTime: 4,
        },
        msgType: {
          text: 0,
          picture: 1,
          audio: 2,
          video: 3,
          location: 4,
          notification: 5,
          file: 6,
          netcall_audio: 7,
          netcall_vedio: 8,
          datatunnel_new: 9,
          tips: 10,
          robot: 11,
          custom: 100,
        },
        msgEvent: {
          type: 1,
          value: 2,
          idClient: 3,
          custom: 4,
          validTime: 5,
          broadcastType: 6,
          sync: 7,
          validTimeType: 8,
          durable: 9,
          time: 10,
          idServer: 11,
          clientType: 12,
          serverConfig: 13,
          serverCustom: 14,
          appid: 101,
          account: 103,
          enableMultiClient: 104,
          consid: 106,
        },
        msgEventSubscribe: {
          type: 1,
          subscribeTime: 2,
          sync: 3,
          to: 102,
          from: 104,
          time: 105,
        },
      }
    },
    function(e, t) {
      e.exports = {
        imLogin: {
          4: 'os',
          6: 'sdkVersion',
          8: 'appLogin',
          9: 'protocolVersion',
          13: 'deviceId',
          18: 'appKey',
          19: 'account',
          24: 'browser',
          26: 'session',
          1000: 'token',
        },
        nosToken: { 1: 'objectName', 2: 'token', 3: 'bucket', 4: 'expireTime' },
        audioToText: { 2: 'url' },
        imageOp: {
          0: 'type',
          1: 'stripmeta',
          2: 'typeType',
          3: 'blurRadius',
          4: 'blurSigma',
          5: 'qualityQuality',
          6: 'cropX',
          7: 'cropY',
          8: 'cropWidth',
          9: 'cropHeight',
          10: 'rotateAngle',
          11: 'pixelPixel',
          12: 'thumbnailMode',
          13: 'thumbnailWidth',
          14: 'thumbnailHeight',
          15: 'thumbnailAxisX',
          16: 'thumbnailAxisY',
          17: 'thumbnailCenterX',
          18: 'thumbnailCenterY',
          19: 'thumbnailEnlarge',
          20: 'thumbnailToStatic',
          21: 'watermarkType',
          22: 'watermarkGravity',
          23: 'watermarkDissolve',
          24: 'watermarkDx',
          25: 'watermarkDy',
          26: 'watermarkImage',
          27: 'watermarkText',
          28: 'watermarkFont',
          29: 'watermarkFontSize',
          30: 'watermarkFontColor',
          31: 'interlace',
        },
        robot: {
          4: 'account',
          5: 'nick',
          6: 'avatar',
          7: 'intro',
          8: 'config',
          9: 'valid',
          10: 'createTime',
          11: 'updateTime',
          12: 'custid',
          13: 'botid',
          14: 'bindTime',
        },
        login: {
          1: 'appKey',
          2: 'account',
          3: 'deviceId',
          5: 'chatroomId',
          20: 'chatroomNick',
          21: 'chatroomAvatar',
          22: 'chatroomCustom',
          23: 'chatroomEnterCustom',
          26: 'session',
          38: 'isAnonymous',
        },
        chatroom: {
          1: 'id',
          3: 'name',
          4: 'announcement',
          5: 'broadcastUrl',
          12: 'custom',
          14: 'createTime',
          15: 'updateTime',
          16: 'queuelevel',
          100: 'creator',
          101: 'onlineMemberNum',
          102: 'mute',
        },
        msg: {
          1: 'idClient',
          2: 'type',
          3: 'attach',
          4: 'custom',
          5: 'resend',
          6: 'userUpdateTime',
          7: 'fromNick',
          8: 'fromAvatar',
          9: 'fromCustom',
          10: 'yidunEnable',
          11: 'antiSpamContent',
          12: 'skipHistory',
          13: 'body',
          14: 'antiSpamBusinessId',
          20: 'time',
          21: 'from',
          22: 'chatroomId',
          23: 'fromClientType',
        },
        chatroomMember: {
          1: 'chatroomId',
          2: 'account',
          3: 'type',
          4: 'level',
          5: 'nick',
          6: 'avatar',
          7: 'custom',
          8: 'online',
          9: 'guest',
          10: 'enterTime',
          12: 'blacked',
          13: 'gaged',
          14: 'valid',
          15: 'updateTime',
          16: 'tempMuted',
          17: 'tempMuteDuration',
        },
      }
    },
    function(e, t) {
      e.exports = {
        nosToken: { 1: 'objectName', 2: 'token', 3: 'bucket', 4: 'expireTime' },
        audioToText: { 2: 'url' },
        imageOp: {
          0: 'type',
          1: 'stripmeta',
          2: 'typeType',
          3: 'blurRadius',
          4: 'blurSigma',
          5: 'qualityQuality',
          6: 'cropX',
          7: 'cropY',
          8: 'cropWidth',
          9: 'cropHeight',
          10: 'rotateAngle',
          11: 'pixelPixel',
          12: 'thumbnailMode',
          13: 'thumbnailWidth',
          14: 'thumbnailHeight',
          15: 'thumbnailAxisX',
          16: 'thumbnailAxisY',
          17: 'thumbnailCenterX',
          18: 'thumbnailCenterY',
          19: 'thumbnailEnlarge',
          20: 'thumbnailToStatic',
          21: 'watermarkType',
          22: 'watermarkGravity',
          23: 'watermarkDissolve',
          24: 'watermarkDx',
          25: 'watermarkDy',
          26: 'watermarkImage',
          27: 'watermarkText',
          28: 'watermarkFont',
          29: 'watermarkFontSize',
          30: 'watermarkFontColor',
          31: 'interlace',
        },
        robot: {
          4: 'account',
          5: 'nick',
          6: 'avatar',
          7: 'intro',
          8: 'config',
          9: 'valid',
          10: 'createTime',
          11: 'updateTime',
          12: 'custid',
          13: 'botid',
          14: 'bindTime',
        },
        login: {
          4: 'os',
          6: 'sdkVersion',
          8: 'appLogin',
          9: 'protocolVersion',
          13: 'deviceId',
          18: 'appKey',
          19: 'account',
          24: 'browser',
          26: 'session',
          1000: 'token',
        },
        loginRes: {
          17: 'lastLoginDeviceId',
          102: 'connectionId',
          103: 'ip',
          104: 'port',
          106: 'country',
        },
        loginPort: {
          3: 'type',
          4: 'os',
          5: 'mac',
          13: 'deviceId',
          19: 'account',
          102: 'connectionId',
          103: 'ip',
          109: 'time',
        },
        sync: {
          1: 'myInfo',
          2: 'offlineMsgs',
          3: 'teams',
          6: 'netcallMsgs',
          7: 'roamingMsgs',
          9: 'relations',
          11: 'friends',
          12: 'sessions',
          13: 'friendUsers',
          14: 'msgReceipts',
          15: 'myTeamMembers',
          16: 'donnop',
          17: 'deleteMsg',
          18: 'sessionAck',
          19: 'robots',
          20: 'broadcastMsgs',
          100: 'filterMsgs',
        },
        donnop: { 1: 'open' },
        team: {
          1: 'teamId',
          3: 'name',
          4: 'type',
          5: 'owner',
          6: 'level',
          7: 'selfCustom',
          8: 'valid',
          9: 'memberNum',
          10: 'memberUpdateTime',
          11: 'createTime',
          12: 'updateTime',
          13: 'validToCurrentUser',
          14: 'intro',
          15: 'announcement',
          16: 'joinMode',
          17: 'bits',
          18: 'custom',
          19: 'serverCustom',
          20: 'avatar',
          21: 'beInviteMode',
          22: 'inviteMode',
          23: 'updateTeamMode',
          24: 'updateCustomMode',
          100: 'mute',
        },
        teamMember: {
          1: 'teamId',
          3: 'account',
          4: 'type',
          5: 'nickInTeam',
          7: 'bits',
          8: 'active',
          9: 'valid',
          10: 'joinTime',
          11: 'updateTime',
          12: 'custom',
          13: 'mute',
        },
        msg: {
          0: 'scene',
          1: 'to',
          2: 'from',
          4: 'fromClientType',
          5: 'fromDeviceId',
          6: 'fromNick',
          7: 'time',
          8: 'type',
          9: 'body',
          10: 'attach',
          11: 'idClient',
          12: 'idServer',
          13: 'resend',
          14: 'userUpdateTime',
          15: 'custom',
          16: 'pushPayload',
          17: 'pushContent',
          18: 'apnsAccounts',
          19: 'apnsContent',
          20: 'apnsForcePush',
          21: 'yidunEnable',
          22: 'antiSpamContent',
          23: 'antiSpamBusinessId',
          100: 'isHistoryable',
          101: 'isRoamingable',
          102: 'isSyncable',
          104: 'isMuted',
          105: 'cc',
          107: 'isPushable',
          108: 'isOfflinable',
          109: 'isUnreadable',
          110: 'needPushNick',
        },
        msgReceipt: { 1: 'to', 2: 'from', 7: 'time', 11: 'idClient' },
        sysMsg: {
          0: 'time',
          1: 'type',
          2: 'to',
          3: 'from',
          4: 'ps',
          5: 'attach',
          6: 'idServer',
          7: 'sendToOnlineUsersOnly',
          8: 'apnsText',
          9: 'pushPayload',
          10: 'deletedIdClient',
          11: 'deletedIdServer',
          12: 'yidunEnable',
          13: 'antiSpamContent',
          14: 'deletedMsgTime',
          15: 'deletedMsgFromNick',
          16: 'opeAccount',
          105: 'cc',
          107: 'isPushable',
          109: 'isUnreadable',
          110: 'needPushNick',
        },
        broadcastMsg: {
          1: 'broadcastId',
          2: 'fromAccid',
          3: 'fromUid',
          4: 'timestamp',
          5: 'body',
        },
        friend: {
          4: 'account',
          5: 'flag',
          6: 'beflag',
          7: 'source',
          8: 'alias',
          9: 'bits',
          10: 'custom',
          11: 'createTime',
          12: 'updateTime',
        },
        user: {
          1: 'account',
          3: 'nick',
          4: 'avatar',
          5: 'sign',
          6: 'gender',
          7: 'email',
          8: 'birth',
          9: 'tel',
          10: 'custom',
          12: 'createTime',
          13: 'updateTime',
        },
        specialRelation: {
          0: 'account',
          1: 'isMuted',
          2: 'isBlacked',
          3: 'createTime',
          4: 'updateTime',
        },
        msgType: {
          0: 'text',
          1: 'picture',
          2: 'audio',
          3: 'video',
          4: 'location',
          5: 'notification',
          6: 'file',
          7: 'netcall_audio',
          8: 'netcall_vedio',
          9: 'datatunnel_new',
          10: 'tips',
          11: 'robot',
          100: 'custom',
        },
        msgEvent: {
          1: 'type',
          2: 'value',
          3: 'idClient',
          4: 'custom',
          5: 'validTime',
          6: 'broadcastType',
          7: 'sync',
          8: 'validTimeType',
          9: 'durable',
          10: 'time',
          11: 'idServer',
          12: 'clientType',
          13: 'serverConfig',
          14: 'serverCustom',
          101: 'appid',
          103: 'account',
          104: 'enableMultiClient',
          106: 'consid',
        },
        msgEventSubscribe: {
          1: 'type',
          2: 'subscribeTime',
          3: 'sync',
          102: 'to',
          104: 'from',
          105: 'time',
        },
      }
    },
    ,
    ,
    ,
    function(e, t, n) {
      let r = n(10),
        o = n(35),
        i = (function() {
          let e = /json/i,
            t = /post/i
          return function(n, i) {
            i = i || {}
            let a = (i.data = i.data || {}),
              s = (i.headers = i.headers || {}),
              c = r.checkWithDefault(s, 'Accept', 'application/json'),
              u = r.checkWithDefault(s, 'Content-Type', 'application/json')
            return (
              e.test(c) && (i.type = 'json'),
              t.test(i.method) && e.test(u) && (i.data = JSON.stringify(a)),
              o(n, i)
            )
          }
        })()
      e.exports = i
    },
    function(e, t, n) {
      function r(e) {
        const t = this
        t.init(), a.call(t, e)
      }
      var o = n(10),
        i = n(53),
        a = n(36),
        s = {},
        c = a.prototype,
        u = (r.prototype = Object.create(c))
      ;(u.init = (function() {
        function e(e) {
          let t = e.data
          if (t.indexOf(n) === 0) {
            t = JSON.parse(t.replace(n, ''))
            let r = t.key,
              o = s[r]
            o &&
              (delete s[r],
              (t.result = decodeURIComponent(t.result || '')),
              o.onLoad(t))
          }
        }
        function t() {
          if (!r) {
            r = !0
            const t = o.getGlobal()
            t.postMessage ? o.on(t, 'message', e) : i.addMsgListener(e)
          }
        }
        var n = 'NEJ-AJAX-DATA:',
          r = !1
        return function() {
          t()
        }
      })()),
        (u.doSend = function() {
          let e = this,
            t = e.options,
            n = o.url2origin(t.url),
            r = t.proxyUrl || `${n}/res/nej_proxy_frame.html`,
            a = s[r]
          if (o.isArray(a)) return void a.push(e.doSend.bind(e, t))
          if (!a)
            return (
              (s[r] = [e.doSend.bind(e, t)]),
              void o.createIframe({
                src: r,
                onload(e) {
                  const t = s[r]
                  ;(s[r] = o.target(e).contentWindow),
                    t.forEach(e => {
                      try {
                        e()
                      } catch (t) {
                        console.error(t)
                      }
                    })
                },
              })
            )
          if (!e.aborted) {
            const c = (e.key = o.uniqueID())
            s[c] = e
            const u = o.fetch(
              { method: 'GET', url: '', data: null, headers: {}, timeout: 0 },
              t
            )
            ;(u.key = c), i.postMessage(a, { data: u }), e.afterSend()
          }
        }),
        (u.abort = function() {
          const e = this
          ;(e.aborted = !0), delete s[e.key], c.abort.call(e)
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      function r(e) {
        const t = this
        t.init(), i.call(t, e)
      }
      var o = n(10),
        i = n(36),
        a = n(53),
        s = 'NEJ-UPLOAD-RESULT:',
        c = {},
        u = i.prototype,
        l = (r.prototype = Object.create(u))
      ;(l.init = (function() {
        function e(e) {
          let t = e.data
          if (t.indexOf(s) === 0) {
            t = JSON.parse(t.replace(s, ''))
            let n = t.key,
              r = c[n]
            r &&
              (delete c[n],
              (t.result = decodeURIComponent(t.result || '')),
              r.onLoad(t.result))
          }
        }
        function t() {
          if (!n) {
            n = !0
            const t = o.getGlobal()
            t.postMessage
              ? o.on(t, 'message', e)
              : (a.addMsgListener(e), a.startTimer())
          }
        }
        var n = !1
        return function() {
          t()
        }
      })()),
        (l.doSend = function() {
          function e() {
            l.forEach((e, t) => {
              const n = p[t]
              n.parentNode &&
                ((e.name = n.name),
                o.isFunction(e.setAttribute) &&
                  e.setAttribute('form', n.getAttribute('form')),
                n.parentNode.replaceChild(e, n))
            })
          }
          let t = this,
            n = t.options,
            r = (t.key = `zoro-ajax-upload-iframe-${o.uniqueID()}`)
          c[r] = t
          const i = (t.form = o.html2node(
            '<form style="display:none;"></form>'
          ))
          document.body.appendChild(i),
            (i.target = r),
            (i.method = 'POST'),
            (i.enctype = 'multipart/form-data'),
            (i.encoding = 'multipart/form-data')
          let a = n.url,
            s = o.genUrlSep(a)
          i.action = `${a + s}_proxy_=form`
          var u = n.data,
            l = [],
            p = []
          u &&
            o.getKeys(u, n.putFileAtEnd).forEach(e => {
              const t = u[e]
              if (t.tagName && t.tagName.toUpperCase() === 'INPUT') {
                if (t.type === 'file') {
                  let n = t,
                    r = n.cloneNode(!0)
                  n.parentNode.insertBefore(r, n)
                  const a = o.dataset(n, 'name')
                  a && (n.name = a),
                    i.appendChild(n),
                    o.isFunction(n.setAttribute) &&
                      (n.setAttribute('form', ''), n.removeAttribute('form')),
                    l.push(t),
                    p.push(r)
                }
              } else {
                const s = o.html2node('<input type="hidden"/>')
                ;(s.name = e), (s.value = t), i.appendChild(s)
              }
            })
          var f = (t.iframe = o.createIframe({
            name: r,
            onload() {
              return t.aborted
                ? void e()
                : (o.on(f, 'load', t.checkResult.bind(t)),
                  i.submit(),
                  e(),
                  void t.afterSend())
            },
          }))
        }),
        (l.checkResult = function() {
          let e,
            t,
            n = this
          try {
            if (
              ((e = n.iframe.contentWindow.document.body),
              (t = (e.innerText || e.textContent || '').trim()),
              t.indexOf(s) >= 0 || e.innerHTML.indexOf(s) >= 0)
            )
              return
          } catch (r) {
            return void console.error('ignore error if not same domain,', r)
          }
          n.onLoad(t)
        }),
        (l.onLoad = function(e) {
          const t = this
          u.onLoad.call(t, { status: 200, result: e }),
            o.remove(t.form),
            o.remove(t.iframe),
            u.destroy.call(t)
        }),
        (l.destroy = function() {
          o.remove(this.iframe), o.remove(this.form)
        }),
        (l.abort = function() {
          const e = this
          ;(e.aborted = !0), delete c[e.key], u.abort.call(e)
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      function r(e) {
        const t = this
        e.onuploading && t.on('uploading', e.onuploading), i.call(t, e)
      }
      var o = n(10),
        i = n(36),
        a = i.prototype,
        s = (r.prototype = Object.create(a))
      ;(s.doSend = function() {
        let e = this,
          t = e.options,
          n = t.headers,
          r = (e.xhr = new XMLHttpRequest())
        if (n['Content-Type'] === 'multipart/form-data') {
          delete n['Content-Type'],
            (r.upload.onprogress = e.onProgress.bind(e)),
            (r.upload.onload = e.onProgress.bind(e))
          const i = t.data
          ;(t.data = new window.FormData()),
            i &&
              o.getKeys(i, t.putFileAtEnd).forEach(e => {
                const n = i[e]
                n.tagName && n.tagName.toUpperCase() === 'INPUT'
                  ? n.type === 'file' &&
                    [].forEach.call(n.files, e => {
                      t.data.append(
                        o.dataset(n, 'name') ||
                          n.name ||
                          e.name ||
                          `file-${o.uniqueID()}`,
                        e
                      )
                    })
                  : t.data.append(e, n)
              })
        }
        ;(r.onreadystatechange = e.onStateChange.bind(e)),
          t.timeout !== 0 &&
            (e.timer = setTimeout(e.onTimeout.bind(e), t.timeout)),
          r.open(t.method, t.url, !t.sync),
          Object.keys(n).forEach(e => {
            r.setRequestHeader(e, n[e])
          }),
          t.cookie && 'withCredentials' in r && (r.withCredentials = !0),
          r.send(t.data),
          e.afterSend()
      }),
        (s.onProgress = function(e) {
          e.lengthComputable && e.loaded <= e.total && this.emit('uploading', e)
        }),
        (s.onStateChange = function() {
          let e = this,
            t = e.xhr
          t.readyState === 4 &&
            e.onLoad({ status: t.status, result: t.responseText || '' })
        }),
        (s.getResponseHeader = function(e) {
          const t = this.xhr
          return t ? t.getResponseHeader(e) : ''
        }),
        (s.destroy = function() {
          const e = this
          clearTimeout(e.timer)
          try {
            ;(e.xhr.onreadystatechange = o.f), e.xhr.abort()
          } catch (t) {
            console.error('ignore error ajax destroy,', t)
          }
          a.destroy.call(e)
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      let r = n(35),
        o = function(e, t) {
          return (
            (t.method = 'POST'),
            (t.headers = t.headers || {}),
            (t.headers['Content-Type'] = 'multipart/form-data'),
            (t.timeout = 0),
            (t.type = t.type || 'json'),
            r(e, t)
          )
        }
      e.exports = o
    },
    function(e, t, n) {
      ;(function(e) {
        typeof window !== 'undefined' &&
          (window.console ||
            e.env.WEIXIN_APP ||
            (window.console = {
              log() {},
              info() {},
              warn() {},
              error() {},
            }))
      }.call(t, n(9)))
    },
    function(e, t, n) {
      function r() {
        const e =
          arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
        i.merge(this, {
          options: e,
          debug: !1,
          api: 'log',
          style: 'color:blue;',
          log: i.emptyFunc,
          info: i.emptyFunc,
          warn: i.emptyFunc,
          error: i.emptyFunc,
        }),
          (this.prefix = e.prefix || ''),
          this.setDebug(e.debug)
      }
      var o = n(12),
        i = n(1),
        a = r.prototype,
        s = ['Chrome', 'Safari', 'Firefox']
      ;(a.setDebug = function() {
        let e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
          t = this
        if (
          ((t.debug = e),
          e.style && (t.style = e.style),
          t.debug && i.exist(console))
        ) {
          const n = console
          ;(t.log = function() {
            const e = t.formatArgs(arguments)
            s.indexOf(o.name) !== -1 &&
              i.isString(e[0]) &&
              ((e[0] = `%c${e[0]}`), e.splice(1, 0, t.style)),
              t._log('log', e)
          }),
            (t.info = function() {
              const e = t.formatArgs(arguments)
              t._log('info', e)
            }),
            (t.warn = function() {
              const e = t.formatArgs(arguments)
              t._log('warn', e)
            }),
            (t.error = function() {
              const e = t.formatArgs(arguments)
              t._log('error', e)
            }),
            (t._log = function(e, r) {
              let o = t.options.logFunc
              if (o && (o[e] && (o = o[e]), i.isFunction(o)))
                return void o(...r)
              if (n[e])
                try {
                  n[e].apply ? t.chrome(e, r) : t.ie(e, r)
                } catch (a) {}
            }),
            (t.chrome = function(e, r) {
              s.indexOf(o.name) !== -1 ? n[e](...r) : t.ie(e, r)
            }),
            (t.ie = function(e, t) {
              t.forEach(t => {
                n[e](JSON.stringify(t, null, 4))
              })
            })
        }
      }),
        (a.formatArgs = function(e) {
          const t = this
          e = [].slice.call(e, 0)
          let n = new Date(),
            r = `${n.getFullYear()}-${c(n.getMonth() + 1)}-${c(
              n.getDate()
            )} ${c(n.getHours())}:${c(n.getMinutes())}:${c(n.getSeconds())}:${c(
              n.getMilliseconds(),
              3
            )}`,
            o = `[NIM SDK LOG ${r} ${+n} ${t.prefix}]\t`
          return (
            i.isString(e[0]) ? (e[0] = o + e[0]) : e.splice(0, 0, o),
            e.forEach((t, n) => {
              ;(i.isArray(t) || i.isObject(t)) && (e[n] = i.simpleClone(t))
            }),
            e
          )
        })
      var c = function(e, t) {
        t = t || 2
        for (var n = `${e}`; n.length < t; ) n = `0${n}`
        return n
      }
      e.exports = r
    },
    function(e, t, n) {
      let r = n(1),
        o = {
          file: { md5: '$(Etag)', size: '$(ObjectSize)' },
          image: {
            md5: '$(Etag)',
            size: '$(ObjectSize)',
            w: '$(ImageInfo.Width)',
            h: '$(ImageInfo.Height)',
            orientation: '$(ImageInfo.Orientation)',
          },
          audio: {
            md5: '$(Etag)',
            size: '$(ObjectSize)',
            dur: '$(AVinfo.Audio.Duration)',
          },
          video: {
            md5: '$(Etag)',
            size: '$(ObjectSize)',
            dur: '$(AVinfo.Video.Duration)',
            w: '$(AVinfo.Video.Width)',
            h: '$(AVinfo.Video.Height)',
          },
        },
        i = {}
      ;(i.genResponseBody = function(e) {
        return (e = e || 'file'), o[e]
      }),
        (i.parseResponse = function(e, t) {
          r.notundef(e.size) && (e.size = +e.size),
            r.notundef(e.w) && (e.w = +e.w),
            r.notundef(e.h) && (e.h = +e.h),
            r.notundef(e.dur) && (e.dur = +e.dur)
          const n = e.orientation
          if (
            r.notundef(n) &&
            (delete e.orientation,
            t && (n === 'right, top' || n === 'left, bottom'))
          ) {
            const o = e.w
            ;(e.w = e.h), (e.h = o)
          }
          return e
        }),
        (e.exports = i)
    },
    function(e, t, n) {
      function r(e) {
        const t = this
        ;(t.options = o.copy(e)),
          o.verifyOptions(e, 'url fileName'),
          o.verifyParamPresentJustOne(e, 'blob fileInput'),
          o.verifyCallback(e, 'beginupload uploadprogress uploaddone'),
          e.fileInput && (e.fileInput = o.verifyFileInput(e.fileInput)),
          e.type && o.verifyFileType(e.type),
          e.timeout
            ? o.verifyParamType('timeout', e.timeout, 'number')
            : (e.timeout = 6e5),
          o.verifyFileUploadCallback(e),
          (e.data = {})
        let n = e.fileName,
          r = e.fileInput
        if (c)
          if (r) {
            const s = e.type
              ? o.filterFiles(r.files, e.type)
              : [].slice.call(r.files, 0)
            if (!s || !s.length)
              return void e.uploaddone(
                i.newWrongFileTypeError(
                  `未读取到${
                    e.type
                  }类型的文件, 请确保文件选择节点的文件不为空, 并且请确保选择了${
                    e.type
                  }类型的文件`
                )
              )
            const l = r.files[0].size
            if (l > u)
              return void e.uploaddone(
                i.newFileTooLargeError('文件大小超过100M')
              )
            e.data[n] = s[0]
          } else e.blob && (e.data[n] = e.blob)
        else o.dataset(r, 'name', n), (e.data.input = r)
        e.params && o.merge(e.data, e.params)
        const p = {
          data: e.data,
          onaftersend() {
            e.beginupload(t)
          },
          onuploading(t) {
            let n = Math.floor(1e4 * t.loaded / t.total) / 100,
              r = {
                total: t.total,
                loaded: t.loaded,
                percentage: n,
                percentageText: `${n}%`,
              }
            e.fileInput && (r.fileInput = e.fileInput),
              e.blob && (r.blob = e.blob),
              e.uploadprogress(r)
          },
          onload(n) {
            n.Error ? t.onError(n) : e.uploaddone(null, n)
          },
          onerror(n) {
            try {
              if (n.result) var r = JSON.parse(n.result)
              else r = n
              t.onError(r)
            } catch (o) {
              console.error('ignore error if could not parse obj.result', o),
                e.uploaddone(new i(n.message, n.code), t.options)
            }
          },
        }
        c || (p.mode = 'iframe'), (p.putFileAtEnd = !0), (t.sn = a(e.url, p))
      }
      var o = n(1),
        i = n(5),
        a = n(25).upload,
        s = n(25).abort,
        c = o.supportFormData,
        u = 104857600
      ;(r.prototype.onError = function(e) {
        let t,
          n,
          r,
          o = this,
          a = o.options
        ;(e = e || {}),
          (t = e.Error || e || {}),
          (n = t.Code || t.code || 'unknown'),
          (r = t.Message || t.message || '未知错误'),
          a.uploaddone(new i(`${n}(${r})`, n))
      }),
        (r.prototype.abort = function() {
          s(this.sn)
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      let r, o
      !(function(i, a) {
        ;(r = a),
          (o = typeof r === 'function' ? r.call(t, n, t, e) : r),
          !(void 0 !== o && (e.exports = o))
      })(this, function() {
        var e,
          t,
          n = Array,
          r = n.prototype,
          o = Object,
          i = o.prototype,
          a = Function,
          s = a.prototype,
          c = String,
          u = c.prototype,
          l = Number,
          p = l.prototype,
          f = r.slice,
          d = r.splice,
          m = r.push,
          h = r.unshift,
          y = r.concat,
          g = r.join,
          v = s.call,
          b = s.apply,
          w = Math.max,
          k = Math.min,
          T = i.toString,
          S =
            typeof Symbol === 'function' &&
            typeof Symbol.toStringTag === 'symbol',
          M = Function.prototype.toString,
          _ = /^\s*class /,
          x = function(e) {
            try {
              let t = M.call(e),
                n = t.replace(/\/\/.*\n/g, ''),
                r = n.replace(/\/\*[.\s\S]*\*\//g, ''),
                o = r.replace(/\n/gm, ' ').replace(/ {2}/g, ' ')
              return _.test(o)
            } catch (i) {
              return !1
            }
          },
          C = function(e) {
            try {
              return !x(e) && (M.call(e), !0)
            } catch (t) {
              return !1
            }
          },
          O = '[object Function]',
          E = '[object GeneratorFunction]',
          e = function(e) {
            if (!e) return !1
            if (typeof e !== 'function' && typeof e !== 'object') return !1
            if (S) return C(e)
            if (x(e)) return !1
            const t = T.call(e)
            return t === O || t === E
          },
          P = RegExp.prototype.exec,
          A = function(e) {
            try {
              return P.call(e), !0
            } catch (t) {
              return !1
            }
          },
          I = '[object RegExp]'
        t = function(e) {
          return typeof e === 'object' && (S ? A(e) : T.call(e) === I)
        }
        let j,
          N = String.prototype.valueOf,
          D = function(e) {
            try {
              return N.call(e), !0
            } catch (t) {
              return !1
            }
          },
          F = '[object String]'
        j = function(e) {
          return (
            typeof e === 'string' ||
            (typeof e === 'object' && (S ? D(e) : T.call(e) === F))
          )
        }
        let R =
            o.defineProperty &&
            (function() {
              try {
                const e = {}
                o.defineProperty(e, 'x', { enumerable: !1, value: e })
                for (const t in e) return !1
                return e.x === e
              } catch (n) {
                return !1
              }
            })(),
          L = (function(e) {
            let t
            return (
              (t = R
                ? function(e, t, n, r) {
                    ;(!r && t in e) ||
                      o.defineProperty(e, t, {
                        configurable: !0,
                        enumerable: !1,
                        writable: !0,
                        value: n,
                      })
                  }
                : function(e, t, n, r) {
                    ;(!r && t in e) || (e[t] = n)
                  }),
              function(n, r, o) {
                for (const i in r) e.call(r, i) && t(n, i, r[i], o)
              }
            )
          })(i.hasOwnProperty),
          U = function(e) {
            const t = typeof e
            return e === null || (t !== 'object' && t !== 'function')
          },
          B =
            l.isNaN ||
            function(e) {
              return e !== e
            },
          q = {
            ToInteger(e) {
              let t = +e
              return (
                B(t)
                  ? (t = 0)
                  : t !== 0 &&
                    t !== 1 / 0 &&
                    t !== -(1 / 0) &&
                    (t = (t > 0 || -1) * Math.floor(Math.abs(t))),
                t
              )
            },
            ToPrimitive(t) {
              let n, r, o
              if (U(t)) return t
              if (((r = t.valueOf), e(r) && ((n = r.call(t)), U(n)))) return n
              if (((o = t.toString), e(o) && ((n = o.call(t)), U(n)))) return n
              throw new TypeError()
            },
            ToObject(e) {
              if (e == null) throw new TypeError(`can't convert ${e} to object`)
              return o(e)
            },
            ToUint32(e) {
              return e >>> 0
            },
          },
          W = function() {}
        L(s, {
          bind(t) {
            const n = this
            if (!e(n))
              throw new TypeError(
                `Function.prototype.bind called on incompatible ${n}`
              )
            for (
              var r,
                i = f.call(arguments, 1),
                s = function() {
                  if (this instanceof r) {
                    const e = b.call(n, this, y.call(i, f.call(arguments)))
                    return o(e) === e ? e : this
                  }
                  return b.call(n, t, y.call(i, f.call(arguments)))
                },
                c = w(0, n.length - i.length),
                u = [],
                l = 0;
              l < c;
              l++
            )
              m.call(u, `$${l}`)
            return (
              (r = a(
                'binder',
                `return function (${g.call(
                  u,
                  ','
                )}){ return binder.apply(this, arguments); }`
              )(s)),
              n.prototype &&
                ((W.prototype = n.prototype),
                (r.prototype = new W()),
                (W.prototype = null)),
              r
            )
          },
        })
        let H = v.bind(i.hasOwnProperty),
          $ = v.bind(i.toString),
          X = v.bind(f),
          J = b.bind(f)
        if (
          typeof document === 'object' &&
          document &&
          document.documentElement
        )
          try {
            X(document.documentElement.childNodes)
          } catch (z) {
            let K = X,
              G = J
            ;(X = function(e) {
              for (var t = [], n = e.length; n-- > 0; ) t[n] = e[n]
              return G(t, K(arguments, 1))
            }),
              (J = function(e, t) {
                return G(X(e), t)
              })
          }
        let V = v.bind(u.slice),
          Y = v.bind(u.split),
          Z = v.bind(u.indexOf),
          Q = v.bind(m),
          ee = v.bind(i.propertyIsEnumerable),
          te = v.bind(r.sort),
          ne =
            n.isArray ||
            function(e) {
              return $(e) === '[object Array]'
            },
          re = [].unshift(0) !== 1
        L(
          r,
          {
            unshift() {
              return h.apply(this, arguments), this.length
            },
          },
          re
        ),
          L(n, { isArray: ne })
        let oe = o('a'),
          ie = oe[0] !== 'a' || !(0 in oe),
          ae = function(e) {
            let t = !0,
              n = !0,
              r = !1
            if (e)
              try {
                e.call('foo', (e, n, r) => {
                  typeof r !== 'object' && (t = !1)
                }),
                  e.call(
                    [1],
                    function() {
                      n = typeof this === 'string'
                    },
                    'x'
                  )
              } catch (o) {
                r = !0
              }
            return !!e && !r && t && n
          }
        L(
          r,
          {
            forEach(t) {
              let n,
                r = q.ToObject(this),
                o = ie && j(this) ? Y(this, '') : r,
                i = -1,
                a = q.ToUint32(o.length)
              if ((arguments.length > 1 && (n = arguments[1]), !e(t)))
                throw new TypeError(
                  'Array.prototype.forEach callback must be a function'
                )
              for (; ++i < a; )
                i in o &&
                  (typeof n === 'undefined'
                    ? t(o[i], i, r)
                    : t.call(n, o[i], i, r))
            },
          },
          !ae(r.forEach)
        ),
          L(
            r,
            {
              map(t) {
                let r,
                  o = q.ToObject(this),
                  i = ie && j(this) ? Y(this, '') : o,
                  a = q.ToUint32(i.length),
                  s = n(a)
                if ((arguments.length > 1 && (r = arguments[1]), !e(t)))
                  throw new TypeError(
                    'Array.prototype.map callback must be a function'
                  )
                for (let c = 0; c < a; c++)
                  c in i &&
                    (typeof r === 'undefined'
                      ? (s[c] = t(i[c], c, o))
                      : (s[c] = t.call(r, i[c], c, o)))
                return s
              },
            },
            !ae(r.map)
          ),
          L(
            r,
            {
              filter(t) {
                let n,
                  r,
                  o = q.ToObject(this),
                  i = ie && j(this) ? Y(this, '') : o,
                  a = q.ToUint32(i.length),
                  s = []
                if ((arguments.length > 1 && (r = arguments[1]), !e(t)))
                  throw new TypeError(
                    'Array.prototype.filter callback must be a function'
                  )
                for (let c = 0; c < a; c++)
                  c in i &&
                    ((n = i[c]),
                    (typeof r === 'undefined'
                      ? t(n, c, o)
                      : t.call(r, n, c, o)) && Q(s, n))
                return s
              },
            },
            !ae(r.filter)
          ),
          L(
            r,
            {
              every(t) {
                let n,
                  r = q.ToObject(this),
                  o = ie && j(this) ? Y(this, '') : r,
                  i = q.ToUint32(o.length)
                if ((arguments.length > 1 && (n = arguments[1]), !e(t)))
                  throw new TypeError(
                    'Array.prototype.every callback must be a function'
                  )
                for (let a = 0; a < i; a++)
                  if (
                    a in o &&
                    !(typeof n === 'undefined'
                      ? t(o[a], a, r)
                      : t.call(n, o[a], a, r))
                  )
                    return !1
                return !0
              },
            },
            !ae(r.every)
          ),
          L(
            r,
            {
              some(t) {
                let n,
                  r = q.ToObject(this),
                  o = ie && j(this) ? Y(this, '') : r,
                  i = q.ToUint32(o.length)
                if ((arguments.length > 1 && (n = arguments[1]), !e(t)))
                  throw new TypeError(
                    'Array.prototype.some callback must be a function'
                  )
                for (let a = 0; a < i; a++)
                  if (
                    a in o &&
                    (typeof n === 'undefined'
                      ? t(o[a], a, r)
                      : t.call(n, o[a], a, r))
                  )
                    return !0
                return !1
              },
            },
            !ae(r.some)
          )
        let se = !1
        r.reduce &&
          (se =
            typeof r.reduce.call('es5', (e, t, n, r) => {
              return r
            }) === 'object'),
          L(
            r,
            {
              reduce(t) {
                let n = q.ToObject(this),
                  r = ie && j(this) ? Y(this, '') : n,
                  o = q.ToUint32(r.length)
                if (!e(t))
                  throw new TypeError(
                    'Array.prototype.reduce callback must be a function'
                  )
                if (o === 0 && arguments.length === 1)
                  throw new TypeError(
                    'reduce of empty array with no initial value'
                  )
                let i,
                  a = 0
                if (arguments.length >= 2) i = arguments[1]
                else
                  for (;;) {
                    if (a in r) {
                      i = r[a++]
                      break
                    }
                    if (++a >= o)
                      throw new TypeError(
                        'reduce of empty array with no initial value'
                      )
                  }
                for (; a < o; a++) a in r && (i = t(i, r[a], a, n))
                return i
              },
            },
            !se
          )
        let ce = !1
        r.reduceRight &&
          (ce =
            typeof r.reduceRight.call('es5', (e, t, n, r) => {
              return r
            }) === 'object'),
          L(
            r,
            {
              reduceRight(t) {
                let n = q.ToObject(this),
                  r = ie && j(this) ? Y(this, '') : n,
                  o = q.ToUint32(r.length)
                if (!e(t))
                  throw new TypeError(
                    'Array.prototype.reduceRight callback must be a function'
                  )
                if (o === 0 && arguments.length === 1)
                  throw new TypeError(
                    'reduceRight of empty array with no initial value'
                  )
                let i,
                  a = o - 1
                if (arguments.length >= 2) i = arguments[1]
                else
                  for (;;) {
                    if (a in r) {
                      i = r[a--]
                      break
                    }
                    if (--a < 0)
                      throw new TypeError(
                        'reduceRight of empty array with no initial value'
                      )
                  }
                if (a < 0) return i
                do a in r && (i = t(i, r[a], a, n))
                while (a--)
                return i
              },
            },
            !ce
          )
        const ue = r.indexOf && [0, 1].indexOf(1, 2) !== -1
        L(
          r,
          {
            indexOf(e) {
              let t = ie && j(this) ? Y(this, '') : q.ToObject(this),
                n = q.ToUint32(t.length)
              if (n === 0) return -1
              let r = 0
              for (
                arguments.length > 1 && (r = q.ToInteger(arguments[1])),
                  r = r >= 0 ? r : w(0, n + r);
                r < n;
                r++
              )
                if (r in t && t[r] === e) return r
              return -1
            },
          },
          ue
        )
        const le = r.lastIndexOf && [0, 1].lastIndexOf(0, -3) !== -1
        L(
          r,
          {
            lastIndexOf(e) {
              let t = ie && j(this) ? Y(this, '') : q.ToObject(this),
                n = q.ToUint32(t.length)
              if (n === 0) return -1
              let r = n - 1
              for (
                arguments.length > 1 && (r = k(r, q.ToInteger(arguments[1]))),
                  r = r >= 0 ? r : n - Math.abs(r);
                r >= 0;
                r--
              )
                if (r in t && e === t[r]) return r
              return -1
            },
          },
          le
        )
        const pe = (function() {
          let e = [1, 2],
            t = e.splice()
          return e.length === 2 && ne(t) && t.length === 0
        })()
        L(
          r,
          {
            splice(e, t) {
              return arguments.length === 0 ? [] : d.apply(this, arguments)
            },
          },
          !pe
        )
        const fe = (function() {
          const e = {}
          return r.splice.call(e, 0, 0, 1), e.length === 1
        })()
        L(
          r,
          {
            splice(e, t) {
              if (arguments.length === 0) return []
              let n = arguments
              return (
                (this.length = w(q.ToInteger(this.length), 0)),
                arguments.length > 0 &&
                  typeof t !== 'number' &&
                  ((n = X(arguments)),
                  n.length < 2
                    ? Q(n, this.length - e)
                    : (n[1] = q.ToInteger(t))),
                d.apply(this, n)
              )
            },
          },
          !fe
        )
        let de = (function() {
            const e = new n(1e5)
            return (e[8] = 'x'), e.splice(1, 1), e.indexOf('x') === 7
          })(),
          me = (function() {
            let e = 256,
              t = []
            return (t[e] = 'a'), t.splice(e + 1, 0, 'b'), t[e] === 'a'
          })()
        L(
          r,
          {
            splice(e, t) {
              for (
                var n,
                  r = q.ToObject(this),
                  o = [],
                  i = q.ToUint32(r.length),
                  a = q.ToInteger(e),
                  s = a < 0 ? w(i + a, 0) : k(a, i),
                  u = k(w(q.ToInteger(t), 0), i - s),
                  l = 0;
                l < u;

              )
                (n = c(s + l)), H(r, n) && (o[l] = r[n]), (l += 1)
              let p,
                f = X(arguments, 2),
                d = f.length
              if (d < u) {
                l = s
                for (let m = i - u; l < m; )
                  (n = c(l + u)),
                    (p = c(l + d)),
                    H(r, n) ? (r[p] = r[n]) : delete r[p],
                    (l += 1)
                l = i
                for (let h = i - u + d; l > h; ) delete r[l - 1], (l -= 1)
              } else if (d > u)
                for (l = i - u; l > s; )
                  (n = c(l + u - 1)),
                    (p = c(l + d - 1)),
                    H(r, n) ? (r[p] = r[n]) : delete r[p],
                    (l -= 1)
              l = s
              for (let y = 0; y < f.length; ++y) (r[l] = f[y]), (l += 1)
              return (r.length = i - u + d), o
            },
          },
          !de || !me
        )
        let he,
          ye = r.join
        try {
          he = Array.prototype.join.call('123', ',') !== '1,2,3'
        } catch (z) {
          he = !0
        }
        he &&
          L(
            r,
            {
              join(e) {
                const t = typeof e === 'undefined' ? ',' : e
                return ye.call(j(this) ? Y(this, '') : this, t)
              },
            },
            he
          )
        const ge = [1, 2].join(void 0) !== '1,2'
        ge &&
          L(
            r,
            {
              join(e) {
                const t = typeof e === 'undefined' ? ',' : e
                return ye.call(this, t)
              },
            },
            ge
          )
        let ve = function(e) {
            for (
              var t = q.ToObject(this), n = q.ToUint32(t.length), r = 0;
              r < arguments.length;

            )
              (t[n + r] = arguments[r]), (r += 1)
            return (t.length = n + r), n + r
          },
          be = (function() {
            let e = {},
              t = Array.prototype.push.call(e, void 0)
            return (
              t !== 1 ||
              e.length !== 1 ||
              typeof e[0] !== 'undefined' ||
              !H(e, 0)
            )
          })()
        L(
          r,
          {
            push(e) {
              return ne(this)
                ? m.apply(this, arguments)
                : ve.apply(this, arguments)
            },
          },
          be
        )
        const we = (function() {
          let e = [],
            t = e.push(void 0)
          return (
            t !== 1 || e.length !== 1 || typeof e[0] !== 'undefined' || !H(e, 0)
          )
        })()
        L(r, { push: ve }, we),
          L(
            r,
            {
              slice(e, t) {
                const n = j(this) ? Y(this, '') : this
                return J(n, arguments)
              },
            },
            ie
          )
        let ke = (function() {
            try {
              ;[1, 2].sort(null)
            } catch (e) {
              try {
                ;[1, 2].sort({})
              } catch (t) {
                return !1
              }
            }
            return !0
          })(),
          Te = (function() {
            try {
              return [1, 2].sort(/a/), !1
            } catch (e) {}
            return !0
          })(),
          Se = (function() {
            try {
              return [1, 2].sort(void 0), !0
            } catch (e) {}
            return !1
          })()
        L(
          r,
          {
            sort(t) {
              if (typeof t === 'undefined') return te(this)
              if (!e(t))
                throw new TypeError(
                  'Array.prototype.sort callback must be a function'
                )
              return te(this, t)
            },
          },
          ke || !Se || !Te
        )
        let Me = !ee({ toString: null }, 'toString'),
          _e = ee(() => {}, 'prototype'),
          xe = !H('x', '0'),
          Ce = function(e) {
            const t = e.constructor
            return t && t.prototype === e
          },
          Oe = {
            $window: !0,
            $console: !0,
            $parent: !0,
            $self: !0,
            $frame: !0,
            $frames: !0,
            $frameElement: !0,
            $webkitIndexedDB: !0,
            $webkitStorageInfo: !0,
            $external: !0,
            $width: !0,
            $height: !0,
            $top: !0,
            $localStorage: !0,
          },
          Ee = (function() {
            if (typeof window === 'undefined') return !1
            for (const e in window)
              try {
                !Oe[`$${e}`] &&
                  H(window, e) &&
                  window[e] !== null &&
                  typeof window[e] === 'object' &&
                  Ce(window[e])
              } catch (t) {
                return !0
              }
            return !1
          })(),
          Pe = function(e) {
            if (typeof window === 'undefined' || !Ee) return Ce(e)
            try {
              return Ce(e)
            } catch (t) {
              return !1
            }
          },
          Ae = [
            'toString',
            'toLocaleString',
            'valueOf',
            'hasOwnProperty',
            'isPrototypeOf',
            'propertyIsEnumerable',
            'constructor',
          ],
          Ie = Ae.length,
          je = function(e) {
            return $(e) === '[object Arguments]'
          },
          Ne = function(t) {
            return (
              t !== null &&
              typeof t === 'object' &&
              typeof t.length === 'number' &&
              t.length >= 0 &&
              !ne(t) &&
              e(t.callee)
            )
          },
          De = je(arguments) ? je : Ne
        L(o, {
          keys(t) {
            let n = e(t),
              r = De(t),
              o = t !== null && typeof t === 'object',
              i = o && j(t)
            if (!o && !n && !r)
              throw new TypeError('Object.keys called on a non-object')
            let a = [],
              s = _e && n
            if ((i && xe) || r) for (let u = 0; u < t.length; ++u) Q(a, c(u))
            if (!r)
              for (const l in t)
                (s && l === 'prototype') || !H(t, l) || Q(a, c(l))
            if (Me)
              for (let p = Pe(t), f = 0; f < Ie; f++) {
                const d = Ae[f]
                ;(p && d === 'constructor') || !H(t, d) || Q(a, d)
              }
            return a
          },
        })
        let Fe =
            o.keys &&
            (function() {
              return o.keys(arguments).length === 2
            })(1, 2),
          Re =
            o.keys &&
            (function() {
              const e = o.keys(arguments)
              return arguments.length !== 1 || e.length !== 1 || e[0] !== 1
            })(1),
          Le = o.keys
        L(
          o,
          {
            keys(e) {
              return Le(De(e) ? X(e) : e)
            },
          },
          !Fe || Re
        )
        let Ue,
          Be,
          qe = new Date(-0xc782b5b342b24).getUTCMonth() !== 0,
          We = new Date(-0x55d318d56a724),
          He = new Date(14496624e5),
          $e = We.toUTCString() !== 'Mon, 01 Jan -45875 11:59:59 GMT',
          Xe = We.getTimezoneOffset()
        Xe < -720
          ? ((Ue = We.toDateString() !== 'Tue Jan 02 -45875'),
            (Be = !/^Thu Dec 10 2015 \d\d:\d\d:\d\d GMT[-+]\d\d\d\d(?: |$)/.test(
              String(He)
            )))
          : ((Ue = We.toDateString() !== 'Mon Jan 01 -45875'),
            (Be = !/^Wed Dec 09 2015 \d\d:\d\d:\d\d GMT[-+]\d\d\d\d(?: |$)/.test(
              String(He)
            )))
        let Je = v.bind(Date.prototype.getFullYear),
          ze = v.bind(Date.prototype.getMonth),
          Ke = v.bind(Date.prototype.getDate),
          Ge = v.bind(Date.prototype.getUTCFullYear),
          Ve = v.bind(Date.prototype.getUTCMonth),
          Ye = v.bind(Date.prototype.getUTCDate),
          Ze = v.bind(Date.prototype.getUTCDay),
          Qe = v.bind(Date.prototype.getUTCHours),
          et = v.bind(Date.prototype.getUTCMinutes),
          tt = v.bind(Date.prototype.getUTCSeconds),
          nt = v.bind(Date.prototype.getUTCMilliseconds),
          rt = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
          ot = [
            'Jan',
            'Feb',
            'Mar',
            'Apr',
            'May',
            'Jun',
            'Jul',
            'Aug',
            'Sep',
            'Oct',
            'Nov',
            'Dec',
          ],
          it = function(e, t) {
            return Ke(new Date(t, e, 0))
          }
        L(
          Date.prototype,
          {
            getFullYear() {
              if (!(this && this instanceof Date))
                throw new TypeError('this is not a Date object.')
              const e = Je(this)
              return e < 0 && ze(this) > 11 ? e + 1 : e
            },
            getMonth() {
              if (!(this && this instanceof Date))
                throw new TypeError('this is not a Date object.')
              let e = Je(this),
                t = ze(this)
              return e < 0 && t > 11 ? 0 : t
            },
            getDate() {
              if (!(this && this instanceof Date))
                throw new TypeError('this is not a Date object.')
              let e = Je(this),
                t = ze(this),
                n = Ke(this)
              if (e < 0 && t > 11) {
                if (t === 12) return n
                const r = it(0, e + 1)
                return r - n + 1
              }
              return n
            },
            getUTCFullYear() {
              if (!(this && this instanceof Date))
                throw new TypeError('this is not a Date object.')
              const e = Ge(this)
              return e < 0 && Ve(this) > 11 ? e + 1 : e
            },
            getUTCMonth() {
              if (!(this && this instanceof Date))
                throw new TypeError('this is not a Date object.')
              let e = Ge(this),
                t = Ve(this)
              return e < 0 && t > 11 ? 0 : t
            },
            getUTCDate() {
              if (!(this && this instanceof Date))
                throw new TypeError('this is not a Date object.')
              let e = Ge(this),
                t = Ve(this),
                n = Ye(this)
              if (e < 0 && t > 11) {
                if (t === 12) return n
                const r = it(0, e + 1)
                return r - n + 1
              }
              return n
            },
          },
          qe
        ),
          L(
            Date.prototype,
            {
              toUTCString() {
                if (!(this && this instanceof Date))
                  throw new TypeError('this is not a Date object.')
                let e = Ze(this),
                  t = Ye(this),
                  n = Ve(this),
                  r = Ge(this),
                  o = Qe(this),
                  i = et(this),
                  a = tt(this)
                return `${rt[e]}, ${t < 10 ? `0${t}` : t} ${ot[n]} ${r} ${
                  o < 10 ? `0${o}` : o
                }:${i < 10 ? `0${i}` : i}:${a < 10 ? `0${a}` : a} GMT`
              },
            },
            qe || $e
          ),
          L(
            Date.prototype,
            {
              toDateString() {
                if (!(this && this instanceof Date))
                  throw new TypeError('this is not a Date object.')
                let e = this.getDay(),
                  t = this.getDate(),
                  n = this.getMonth(),
                  r = this.getFullYear()
                return `${rt[e]} ${ot[n]} ${t < 10 ? `0${t}` : t} ${r}`
              },
            },
            qe || Ue
          ),
          (qe || Be) &&
            ((Date.prototype.toString = function() {
              if (!(this && this instanceof Date))
                throw new TypeError('this is not a Date object.')
              let e = this.getDay(),
                t = this.getDate(),
                n = this.getMonth(),
                r = this.getFullYear(),
                o = this.getHours(),
                i = this.getMinutes(),
                a = this.getSeconds(),
                s = this.getTimezoneOffset(),
                c = Math.floor(Math.abs(s) / 60),
                u = Math.floor(Math.abs(s) % 60)
              return `${rt[e]} ${ot[n]} ${t < 10 ? `0${t}` : t} ${r} ${
                o < 10 ? `0${o}` : o
              }:${i < 10 ? `0${i}` : i}:${a < 10 ? `0${a}` : a} GMT${
                s > 0 ? '-' : '+'
              }${c < 10 ? `0${c}` : c}${u < 10 ? `0${u}` : u}`
            }),
            R &&
              o.defineProperty(Date.prototype, 'toString', {
                configurable: !0,
                enumerable: !1,
                writable: !0,
              }))
        let at = -621987552e5,
          st = '-000001',
          ct =
            Date.prototype.toISOString &&
            new Date(at).toISOString().indexOf(st) === -1,
          ut =
            Date.prototype.toISOString &&
            new Date(-1).toISOString() !== '1969-12-31T23:59:59.999Z',
          lt = v.bind(Date.prototype.getTime)
        L(
          Date.prototype,
          {
            toISOString() {
              if (!isFinite(this) || !isFinite(lt(this)))
                throw new RangeError(
                  'Date.prototype.toISOString called on non-finite value.'
                )
              let e = Ge(this),
                t = Ve(this)
              ;(e += Math.floor(t / 12)), (t = (t % 12 + 12) % 12)
              const n = [t + 1, Ye(this), Qe(this), et(this), tt(this)]
              e =
                (e < 0 ? '-' : e > 9999 ? '+' : '') +
                V(`00000${Math.abs(e)}`, e >= 0 && e <= 9999 ? -4 : -6)
              for (let r = 0; r < n.length; ++r) n[r] = V(`00${n[r]}`, -2)
              return `${e}-${X(n, 0, 2).join('-')}T${X(n, 2).join(':')}.${V(
                `000${nt(this)}`,
                -3
              )}Z`
            },
          },
          ct || ut
        )
        const pt = (function() {
          try {
            return (
              Date.prototype.toJSON &&
              new Date(NaN).toJSON() === null &&
              new Date(at).toJSON().indexOf(st) !== -1 &&
              Date.prototype.toJSON.call({
                toISOString() {
                  return !0
                },
              })
            )
          } catch (e) {
            return !1
          }
        })()
        pt ||
          (Date.prototype.toJSON = function(t) {
            let n = o(this),
              r = q.ToPrimitive(n)
            if (typeof r === 'number' && !isFinite(r)) return null
            const i = n.toISOString
            if (!e(i))
              throw new TypeError('toISOString property is not callable')
            return i.call(n)
          })
        let ft = Date.parse('+033658-09-27T01:46:40.000Z') === 1e15,
          dt =
            !isNaN(Date.parse('2012-04-04T24:00:00.500Z')) ||
            !isNaN(Date.parse('2012-11-31T23:59:59.000Z')) ||
            !isNaN(Date.parse('2012-12-31T23:59:60.000Z')),
          mt = isNaN(Date.parse('2000-01-01T00:00:00.000Z'))
        if (mt || dt || !ft) {
          let ht = Math.pow(2, 31) - 1,
            yt = B(new Date(1970, 0, 1, 0, 0, 0, ht + 1).getTime())
          Date = (function(e) {
            var t = function(n, r, o, i, a, s, u) {
                let l,
                  p = arguments.length
                if (this instanceof e) {
                  let f = s,
                    d = u
                  if (yt && p >= 7 && u > ht) {
                    let m = Math.floor(u / ht) * ht,
                      h = Math.floor(m / 1e3)
                    ;(f += h), (d -= 1e3 * h)
                  }
                  l =
                    p === 1 && c(n) === n
                      ? new e(t.parse(n))
                      : p >= 7
                        ? new e(n, r, o, i, a, f, d)
                        : p >= 6
                          ? new e(n, r, o, i, a, f)
                          : p >= 5
                            ? new e(n, r, o, i, a)
                            : p >= 4
                              ? new e(n, r, o, i)
                              : p >= 3
                                ? new e(n, r, o)
                                : p >= 2
                                  ? new e(n, r)
                                  : p >= 1
                                    ? new e(n instanceof e ? +n : n)
                                    : new e()
                } else l = e.apply(this, arguments)
                return U(l) || L(l, { constructor: t }, !0), l
              },
              n = new RegExp(
                '^(\\d{4}|[+-]\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:(\\.\\d{1,}))?)?(Z|(?:([-+])(\\d{2}):(\\d{2})))?)?)?)?$'
              ),
              r = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],
              o = function(e, t) {
                const n = t > 1 ? 1 : 0
                return (
                  r[t] +
                  Math.floor((e - 1969 + n) / 4) -
                  Math.floor((e - 1901 + n) / 100) +
                  Math.floor((e - 1601 + n) / 400) +
                  365 * (e - 1970)
                )
              },
              i = function(t) {
                let n = 0,
                  r = t
                if (yt && r > ht) {
                  let o = Math.floor(r / ht) * ht,
                    i = Math.floor(o / 1e3)
                  ;(n += i), (r -= 1e3 * i)
                }
                return l(new e(1970, 0, 1, 0, 0, n, r))
              }
            for (const a in e) H(e, a) && (t[a] = e[a])
            L(t, { now: e.now, UTC: e.UTC }, !0),
              (t.prototype = e.prototype),
              L(t.prototype, { constructor: t }, !0)
            const s = function(t) {
              const r = n.exec(t)
              if (r) {
                let a,
                  s = l(r[1]),
                  c = l(r[2] || 1) - 1,
                  u = l(r[3] || 1) - 1,
                  p = l(r[4] || 0),
                  f = l(r[5] || 0),
                  d = l(r[6] || 0),
                  m = Math.floor(1e3 * l(r[7] || 0)),
                  h = Boolean(r[4] && !r[8]),
                  y = r[9] === '-' ? 1 : -1,
                  g = l(r[10] || 0),
                  v = l(r[11] || 0),
                  b = f > 0 || d > 0 || m > 0
                return p < (b ? 24 : 25) &&
                  f < 60 &&
                  d < 60 &&
                  m < 1e3 &&
                  c > -1 &&
                  c < 12 &&
                  g < 24 &&
                  v < 60 &&
                  u > -1 &&
                  u < o(s, c + 1) - o(s, c) &&
                  ((a = 60 * (24 * (o(s, c) + u) + p + g * y)),
                  (a = 1e3 * (60 * (a + f + v * y) + d) + m),
                  h && (a = i(a)),
                  a >= -864e13 && a <= 864e13)
                  ? a
                  : NaN
              }
              return e.parse.apply(this, arguments)
            }
            return L(t, { parse: s }), t
          })(Date)
        }
        Date.now ||
          (Date.now = function() {
            return new Date().getTime()
          })
        var gt =
            p.toFixed &&
            ((8e-5).toFixed(3) !== '0.000' ||
              (0.9).toFixed(0) !== '1' ||
              (1.255).toFixed(2) !== '1.25' ||
              (0xde0b6b3a7640080).toFixed(0) !== '1000000000000000128'),
          vt = {
            base: 1e7,
            size: 6,
            data: [0, 0, 0, 0, 0, 0],
            multiply(e, t) {
              for (let n = -1, r = t; ++n < vt.size; )
                (r += e * vt.data[n]),
                  (vt.data[n] = r % vt.base),
                  (r = Math.floor(r / vt.base))
            },
            divide(e) {
              for (let t = vt.size, n = 0; --t >= 0; )
                (n += vt.data[t]),
                  (vt.data[t] = Math.floor(n / e)),
                  (n = (n % e) * vt.base)
            },
            numToString() {
              for (var e = vt.size, t = ''; --e >= 0; )
                if (t !== '' || e === 0 || vt.data[e] !== 0) {
                  const n = c(vt.data[e])
                  t === '' ? (t = n) : (t += V('0000000', 0, 7 - n.length) + n)
                }
              return t
            },
            pow: function Lt(e, t, n) {
              return t === 0
                ? n
                : t % 2 === 1 ? Lt(e, t - 1, n * e) : Lt(e * e, t / 2, n)
            },
            log(e) {
              for (var t = 0, n = e; n >= 4096; ) (t += 12), (n /= 4096)
              for (; n >= 2; ) (t += 1), (n /= 2)
              return t
            },
          },
          bt = function(e) {
            let t, n, r, o, i, a, s, u
            if (((t = l(e)), (t = B(t) ? 0 : Math.floor(t)), t < 0 || t > 20))
              throw new RangeError(
                'Number.toFixed called with invalid number of decimals'
              )
            if (((n = l(this)), B(n))) return 'NaN'
            if (n <= -1e21 || n >= 1e21) return c(n)
            if (
              ((r = ''), n < 0 && ((r = '-'), (n = -n)), (o = '0'), n > 1e-21)
            )
              if (
                ((i = vt.log(n * vt.pow(2, 69, 1)) - 69),
                (a = i < 0 ? n * vt.pow(2, -i, 1) : n / vt.pow(2, i, 1)),
                (a *= 4503599627370496),
                (i = 52 - i),
                i > 0)
              ) {
                for (vt.multiply(0, a), s = t; s >= 7; )
                  vt.multiply(1e7, 0), (s -= 7)
                for (vt.multiply(vt.pow(10, s, 1), 0), s = i - 1; s >= 23; )
                  vt.divide(1 << 23), (s -= 23)
                vt.divide(1 << s),
                  vt.multiply(1, 1),
                  vt.divide(2),
                  (o = vt.numToString())
              } else
                vt.multiply(0, a),
                  vt.multiply(1 << -i, 0),
                  (o = vt.numToString() + V('0.00000000000000000000', 2, 2 + t))
            return (
              t > 0
                ? ((u = o.length),
                  (o =
                    u <= t
                      ? r + V('0.0000000000000000000', 0, t - u + 2) + o
                      : `${r + V(o, 0, u - t)}.${V(o, u - t)}`))
                : (o = r + o),
              o
            )
          }
        L(p, { toFixed: bt }, gt)
        let wt = (function() {
            try {
              return (1).toPrecision(void 0) === '1'
            } catch (e) {
              return !0
            }
          })(),
          kt = p.toPrecision
        L(
          p,
          {
            toPrecision(e) {
              return typeof e === 'undefined' ? kt.call(this) : kt.call(this, e)
            },
          },
          wt
        ),
          'ab'.split(/(?:ab)*/).length !== 2 ||
          '.'.split(/(.?)(.?)/).length !== 4 ||
          'tesst'.split(/(s)*/)[1] === 't' ||
          'test'.split(/(?:)/, -1).length !== 4 ||
          ''.split(/.?/).length ||
          '.'.split(/()()/).length > 1
            ? !(function() {
                let e = typeof /()??/.exec('')[1] === 'undefined',
                  n = Math.pow(2, 32) - 1
                u.split = function(r, o) {
                  const i = String(this)
                  if (typeof r === 'undefined' && o === 0) return []
                  if (!t(r)) return Y(this, r, o)
                  let a,
                    s,
                    c,
                    u,
                    l = [],
                    p =
                      (r.ignoreCase ? 'i' : '') +
                      (r.multiline ? 'm' : '') +
                      (r.unicode ? 'u' : '') +
                      (r.sticky ? 'y' : ''),
                    f = 0,
                    d = new RegExp(r.source, `${p}g`)
                  e || (a = new RegExp(`^${d.source}$(?!\\s)`, p))
                  const h = typeof o === 'undefined' ? n : q.ToUint32(o)
                  for (
                    s = d.exec(i);
                    s &&
                    ((c = s.index + s[0].length),
                    !(
                      c > f &&
                      (Q(l, V(i, f, s.index)),
                      !e &&
                        s.length > 1 &&
                        s[0].replace(a, function() {
                          for (let e = 1; e < arguments.length - 2; e++)
                            typeof arguments[e] === 'undefined' &&
                              (s[e] = void 0)
                        }),
                      s.length > 1 && s.index < i.length && m.apply(l, X(s, 1)),
                      (u = s[0].length),
                      (f = c),
                      l.length >= h)
                    ));

                  )
                    d.lastIndex === s.index && d.lastIndex++, (s = d.exec(i))
                  return (
                    f === i.length
                      ? (!u && d.test('')) || Q(l, '')
                      : Q(l, V(i, f)),
                    l.length > h ? X(l, 0, h) : l
                  )
                }
              })()
            : '0'.split(void 0, 0).length &&
              (u.split = function(e, t) {
                return typeof e === 'undefined' && t === 0 ? [] : Y(this, e, t)
              })
        let Tt = u.replace,
          St = (function() {
            const e = []
            return (
              'x'.replace(/x(.)?/g, (t, n) => {
                Q(e, n)
              }),
              e.length === 1 && typeof e[0] === 'undefined'
            )
          })()
        St ||
          (u.replace = function(n, r) {
            let o = e(r),
              i = t(n) && /\)[*?]/.test(n.source)
            if (o && i) {
              const a = function(e) {
                let t = arguments.length,
                  o = n.lastIndex
                n.lastIndex = 0
                const i = n.exec(e) || []
                return (
                  (n.lastIndex = o),
                  Q(i, arguments[t - 2], arguments[t - 1]),
                  r.apply(this, i)
                )
              }
              return Tt.call(this, n, a)
            }
            return Tt.call(this, n, r)
          })
        let Mt = u.substr,
          _t = ''.substr && '0b'.substr(-1) !== 'b'
        L(
          u,
          {
            substr(e, t) {
              let n = e
              return e < 0 && (n = w(this.length + e, 0)), Mt.call(this, n, t)
            },
          },
          _t
        )
        let xt = '\t\n\x0B\f\r   ᠎             　\u2028\u2029\ufeff',
          Ct = '​',
          Ot = `[${xt}]`,
          Et = new RegExp(`^${Ot}${Ot}*`),
          Pt = new RegExp(`${Ot + Ot}*$`),
          At = u.trim && (xt.trim() || !Ct.trim())
        L(
          u,
          {
            trim() {
              if (typeof this === 'undefined' || this === null)
                throw new TypeError(`can't convert ${this} to object`)
              return c(this)
                .replace(Et, '')
                .replace(Pt, '')
            },
          },
          At
        )
        let It = v.bind(String.prototype.trim),
          jt = u.lastIndexOf && 'abcあい'.lastIndexOf('あい', 2) !== -1
        L(
          u,
          {
            lastIndexOf(e) {
              if (typeof this === 'undefined' || this === null)
                throw new TypeError(`can't convert ${this} to object`)
              for (
                let t = c(this),
                  n = c(e),
                  r = arguments.length > 1 ? l(arguments[1]) : NaN,
                  o = B(r) ? 1 / 0 : q.ToInteger(r),
                  i = k(w(o, 0), t.length),
                  a = n.length,
                  s = i + a;
                s > 0;

              ) {
                s = w(0, s - a)
                const u = Z(V(t, s, i + a), n)
                if (u !== -1) return s + u
              }
              return -1
            },
          },
          jt
        )
        const Nt = u.lastIndexOf
        if (
          (L(
            u,
            {
              lastIndexOf(e) {
                return Nt.apply(this, arguments)
              },
            },
            u.lastIndexOf.length !== 1
          ),
          (parseInt(`${xt}08`) === 8 && parseInt(`${xt}0x16`) === 22) ||
            (parseInt = (function(e) {
              const t = /^[-+]?0[xX]/
              return function(n, r) {
                let o = It(String(n)),
                  i = l(r) || (t.test(o) ? 16 : 10)
                return e(o, i)
              }
            })(parseInt)),
          1 / parseFloat('-0') !== -(1 / 0) &&
            (parseFloat = (function(e) {
              return function(t) {
                let n = It(String(t)),
                  r = e(n)
                return r === 0 && V(n, 0, 1) === '-' ? -0 : r
              }
            })(parseFloat)),
          String(new RangeError('test')) !== 'RangeError: test')
        ) {
          const Dt = function() {
            if (typeof this === 'undefined' || this === null)
              throw new TypeError(`can't convert ${this} to object`)
            let e = this.name
            typeof e === 'undefined'
              ? (e = 'Error')
              : typeof e !== 'string' && (e = c(e))
            let t = this.message
            return (
              typeof t === 'undefined'
                ? (t = '')
                : typeof t !== 'string' && (t = c(t)),
              e ? (t ? `${e}: ${t}` : e) : t
            )
          }
          Error.prototype.toString = Dt
        }
        if (R) {
          const Ft = function(e, t) {
            if (ee(e, t)) {
              const n = Object.getOwnPropertyDescriptor(e, t)
              n.configurable &&
                ((n.enumerable = !1), Object.defineProperty(e, t, n))
            }
          }
          Ft(Error.prototype, 'message'),
            Error.prototype.message !== '' && (Error.prototype.message = ''),
            Ft(Error.prototype, 'name')
        }
        if (String(/a/gim) !== '/a/gim') {
          const Rt = function() {
            let e = `/${this.source}/`
            return (
              this.global && (e += 'g'),
              this.ignoreCase && (e += 'i'),
              this.multiline && (e += 'm'),
              e
            )
          }
          RegExp.prototype.toString = Rt
        }
      })
    },
    function(e, t, n) {
      function r(e, t, n) {
        if (!s(t)) throw new TypeError('iterator must be a function')
        arguments.length < 3 && (n = this),
          c.call(e) === '[object Array]'
            ? o(e, t, n)
            : typeof e === 'string' ? i(e, t, n) : a(e, t, n)
      }
      function o(e, t, n) {
        for (let r = 0, o = e.length; r < o; r++)
          u.call(e, r) && t.call(n, e[r], r, e)
      }
      function i(e, t, n) {
        for (let r = 0, o = e.length; r < o; r++) t.call(n, e.charAt(r), r, e)
      }
      function a(e, t, n) {
        for (const r in e) u.call(e, r) && t.call(n, e[r], r, e)
      }
      var s = n(55)
      e.exports = r
      var c = Object.prototype.toString,
        u = Object.prototype.hasOwnProperty
    },
    function(e, t) {
      ;(function(t) {
        let n
        ;(n =
          typeof window !== 'undefined'
            ? window
            : typeof t !== 'undefined'
              ? t
              : typeof self !== 'undefined' ? self : {}),
          (e.exports = n)
      }.call(
        t,
        (function() {
          return this
        })()
      ))
    },
    function(e, t, n) {
      let r
      ;(function(e, o) {
        ;(function() {
          function i(e, t) {
            function n(e) {
              if (n[e] !== y) return n[e]
              let i
              if (e == 'bug-string-char-index') i = 'a'[0] != 'a'
              else if (e == 'json') i = n('json-stringify') && n('json-parse')
              else {
                let a,
                  s = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'
                if (e == 'json-stringify') {
                  let u = t.stringify,
                    l = typeof u === 'function' && b
                  if (l) {
                    ;(a = function() {
                      return 1
                    }).toJSON = a
                    try {
                      l =
                        u(0) === '0' &&
                        u(new r()) === '0' &&
                        u(new o()) == '""' &&
                        u(v) === y &&
                        u(y) === y &&
                        u() === y &&
                        u(a) === '1' &&
                        u([a]) == '[1]' &&
                        u([y]) == '[null]' &&
                        u(null) == 'null' &&
                        u([y, v, null]) == '[null,null,null]' &&
                        u({ a: [a, !0, !1, null, '\0\b\n\f\r\t'] }) == s &&
                        u(null, a) === '1' &&
                        u([1, 2], null, 1) == '[\n 1,\n 2\n]' &&
                        u(new c(-864e13)) == '"-271821-04-20T00:00:00.000Z"' &&
                        u(new c(864e13)) == '"+275760-09-13T00:00:00.000Z"' &&
                        u(new c(-621987552e5)) ==
                          '"-000001-01-01T00:00:00.000Z"' &&
                        u(new c(-1)) == '"1969-12-31T23:59:59.999Z"'
                    } catch (p) {
                      l = !1
                    }
                  }
                  i = l
                }
                if (e == 'json-parse') {
                  const f = t.parse
                  if (typeof f === 'function')
                    try {
                      if (f('0') === 0 && !f(!1)) {
                        a = f(s)
                        var d = a.a.length == 5 && a.a[0] === 1
                        if (d) {
                          try {
                            d = !f('"\t"')
                          } catch (p) {}
                          if (d)
                            try {
                              d = f('01') !== 1
                            } catch (p) {}
                          if (d)
                            try {
                              d = f('1.') !== 1
                            } catch (p) {}
                        }
                      }
                    } catch (p) {
                      d = !1
                    }
                  i = d
                }
              }
              return (n[e] = !!i)
            }
            e || (e = u.Object()), t || (t = u.Object())
            var r = e.Number || u.Number,
              o = e.String || u.String,
              a = e.Object || u.Object,
              c = e.Date || u.Date,
              l = e.SyntaxError || u.SyntaxError,
              p = e.TypeError || u.TypeError,
              f = e.Math || u.Math,
              d = e.JSON || u.JSON
            typeof d === 'object' &&
              d &&
              ((t.stringify = d.stringify), (t.parse = d.parse))
            var m,
              h,
              y,
              g = a.prototype,
              v = g.toString,
              b = new c(-0xc782b5b800cec)
            try {
              b =
                b.getUTCFullYear() == -109252 &&
                b.getUTCMonth() === 0 &&
                b.getUTCDate() === 1 &&
                b.getUTCHours() == 10 &&
                b.getUTCMinutes() == 37 &&
                b.getUTCSeconds() == 6 &&
                b.getUTCMilliseconds() == 708
            } catch (w) {}
            if (!n('json')) {
              let k = '[object Function]',
                T = '[object Date]',
                S = '[object Number]',
                M = '[object String]',
                _ = '[object Array]',
                x = '[object Boolean]',
                C = n('bug-string-char-index')
              if (!b)
                var O = f.floor,
                  E = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],
                  P = function(e, t) {
                    return (
                      E[t] +
                      365 * (e - 1970) +
                      O((e - 1969 + (t = +(t > 1))) / 4) -
                      O((e - 1901 + t) / 100) +
                      O((e - 1601 + t) / 400)
                    )
                  }
              if (
                ((m = g.hasOwnProperty) ||
                  (m = function(e) {
                    let t,
                      n = {}
                    return (
                      ((n.__proto__ = null), (n.__proto__ = { toString: 1 }), n)
                        .toString != v
                        ? (m = function(e) {
                            let t = this.__proto__,
                              n = e in ((this.__proto__ = null), this)
                            return (this.__proto__ = t), n
                          })
                        : ((t = n.constructor),
                          (m = function(e) {
                            const n = (this.constructor || t).prototype
                            return e in this && !(e in n && this[e] === n[e])
                          })),
                      (n = null),
                      m.call(this, e)
                    )
                  }),
                (h = function(e, t) {
                  let n,
                    r,
                    o,
                    i = 0
                  ;((n = function() {
                    this.valueOf = 0
                  }).prototype.valueOf = 0),
                    (r = new n())
                  for (o in r) m.call(r, o) && i++
                  return (
                    (n = r = null),
                    i
                      ? (h =
                          i == 2
                            ? function(e, t) {
                                let n,
                                  r = {},
                                  o = v.call(e) == k
                                for (n in e)
                                  (o && n == 'prototype') ||
                                    m.call(r, n) ||
                                    !(r[n] = 1) ||
                                    !m.call(e, n) ||
                                    t(n)
                              }
                            : function(e, t) {
                                let n,
                                  r,
                                  o = v.call(e) == k
                                for (n in e)
                                  (o && n == 'prototype') ||
                                    !m.call(e, n) ||
                                    (r = n === 'constructor') ||
                                    t(n)
                                ;(r || m.call(e, (n = 'constructor'))) && t(n)
                              })
                      : ((r = [
                          'valueOf',
                          'toString',
                          'toLocaleString',
                          'propertyIsEnumerable',
                          'isPrototypeOf',
                          'hasOwnProperty',
                          'constructor',
                        ]),
                        (h = function(e, t) {
                          let n,
                            o,
                            i = v.call(e) == k,
                            a =
                              (!i &&
                                typeof e.constructor !== 'function' &&
                                s[typeof e.hasOwnProperty] &&
                                e.hasOwnProperty) ||
                              m
                          for (n in e)
                            (i && n == 'prototype') || !a.call(e, n) || t(n)
                          for (
                            o = r.length;
                            (n = r[--o]);
                            a.call(e, n) && t(n)
                          );
                        })),
                    h(e, t)
                  )
                }),
                !n('json-stringify'))
              ) {
                var A = {
                    92: '\\\\',
                    34: '\\"',
                    8: '\\b',
                    12: '\\f',
                    10: '\\n',
                    13: '\\r',
                    9: '\\t',
                  },
                  I = '000000',
                  j = function(e, t) {
                    return (I + (t || 0)).slice(-e)
                  },
                  N = '\\u00',
                  D = function(e) {
                    for (
                      var t = '"',
                        n = 0,
                        r = e.length,
                        o = !C || r > 10,
                        i = o && (C ? e.split('') : e);
                      n < r;
                      n++
                    ) {
                      const a = e.charCodeAt(n)
                      switch (a) {
                        case 8:
                        case 9:
                        case 10:
                        case 12:
                        case 13:
                        case 34:
                        case 92:
                          t += A[a]
                          break
                        default:
                          if (a < 32) {
                            t += N + j(2, a.toString(16))
                            break
                          }
                          t += o ? i[n] : e.charAt(n)
                      }
                    }
                    return `${t}"`
                  },
                  F = function(e, t, n, r, o, i, a) {
                    let s, c, u, l, f, d, g, b, w, k, C, E, A, I, N, R
                    try {
                      s = t[e]
                    } catch (L) {}
                    if (typeof s === 'object' && s)
                      if (((c = v.call(s)), c != T || m.call(s, 'toJSON')))
                        typeof s.toJSON === 'function' &&
                          ((c != S && c != M && c != _) ||
                            m.call(s, 'toJSON')) &&
                          (s = s.toJSON(e))
                      else if (s > -1 / 0 && s < 1 / 0) {
                        if (P) {
                          for (
                            f = O(s / 864e5), u = O(f / 365.2425) + 1970 - 1;
                            P(u + 1, 0) <= f;
                            u++
                          );
                          for (
                            l = O((f - P(u, 0)) / 30.42);
                            P(u, l + 1) <= f;
                            l++
                          );
                          ;(f = 1 + f - P(u, l)),
                            (d = (s % 864e5 + 864e5) % 864e5),
                            (g = O(d / 36e5) % 24),
                            (b = O(d / 6e4) % 60),
                            (w = O(d / 1e3) % 60),
                            (k = d % 1e3)
                        } else
                          (u = s.getUTCFullYear()),
                            (l = s.getUTCMonth()),
                            (f = s.getUTCDate()),
                            (g = s.getUTCHours()),
                            (b = s.getUTCMinutes()),
                            (w = s.getUTCSeconds()),
                            (k = s.getUTCMilliseconds())
                        s = `${
                          u <= 0 || u >= 1e4
                            ? (u < 0 ? '-' : '+') + j(6, u < 0 ? -u : u)
                            : j(4, u)
                        }-${j(2, l + 1)}-${j(2, f)}T${j(2, g)}:${j(2, b)}:${j(
                          2,
                          w
                        )}.${j(3, k)}Z`
                      } else s = null
                    if ((n && (s = n.call(t, e, s)), s === null)) return 'null'
                    if (((c = v.call(s)), c == x)) return `${s}`
                    if (c == S) return s > -1 / 0 && s < 1 / 0 ? `${s}` : 'null'
                    if (c == M) return D(`${s}`)
                    if (typeof s === 'object') {
                      for (I = a.length; I--; ) if (a[I] === s) throw p()
                      if ((a.push(s), (C = []), (N = i), (i += o), c == _)) {
                        for (A = 0, I = s.length; A < I; A++)
                          (E = F(A, s, n, r, o, i, a)),
                            C.push(E === y ? 'null' : E)
                        R = C.length
                          ? o
                            ? `[\n${i}${C.join(`,\n${i}`)}\n${N}]`
                            : `[${C.join(',')}]`
                          : '[]'
                      } else
                        h(r || s, e => {
                          const t = F(e, s, n, r, o, i, a)
                          t !== y && C.push(`${D(e)}:${o ? ' ' : ''}${t}`)
                        }),
                          (R = C.length
                            ? o
                              ? `{\n${i}${C.join(`,\n${i}`)}\n${N}}`
                              : `{${C.join(',')}}`
                            : '{}')
                      return a.pop(), R
                    }
                  }
                t.stringify = function(e, t, n) {
                  let r, o, i, a
                  if (s[typeof t] && t)
                    if ((a = v.call(t)) == k) o = t
                    else if (a == _) {
                      i = {}
                      for (
                        var c, u = 0, l = t.length;
                        u < l;
                        c = t[u++],
                          a = v.call(c),
                          (a == M || a == S) && (i[c] = 1)
                      );
                    }
                  if (n)
                    if ((a = v.call(n)) == S) {
                      if ((n -= n % 1) > 0)
                        for (
                          r = '', n > 10 && (n = 10);
                          r.length < n;
                          r += ' '
                        );
                    } else a == M && (r = n.length <= 10 ? n : n.slice(0, 10))
                  return F('', ((c = {}), (c[''] = e), c), o, i, r, '', [])
                }
              }
              if (!n('json-parse')) {
                var R,
                  L,
                  U = o.fromCharCode,
                  B = {
                    92: '\\',
                    34: '"',
                    47: '/',
                    98: '\b',
                    116: '\t',
                    110: '\n',
                    102: '\f',
                    114: '\r',
                  },
                  q = function() {
                    throw ((R = L = null), l())
                  },
                  W = function() {
                    for (var e, t, n, r, o, i = L, a = i.length; R < a; )
                      switch ((o = i.charCodeAt(R))) {
                        case 9:
                        case 10:
                        case 13:
                        case 32:
                          R++
                          break
                        case 123:
                        case 125:
                        case 91:
                        case 93:
                        case 58:
                        case 44:
                          return (e = C ? i.charAt(R) : i[R]), R++, e
                        case 34:
                          for (e = '@', R++; R < a; )
                            if (((o = i.charCodeAt(R)), o < 32)) q()
                            else if (o == 92)
                              switch ((o = i.charCodeAt(++R))) {
                                case 92:
                                case 34:
                                case 47:
                                case 98:
                                case 116:
                                case 110:
                                case 102:
                                case 114:
                                  ;(e += B[o]), R++
                                  break
                                case 117:
                                  for (t = ++R, n = R + 4; R < n; R++)
                                    (o = i.charCodeAt(R)),
                                      (o >= 48 && o <= 57) ||
                                        (o >= 97 && o <= 102) ||
                                        (o >= 65 && o <= 70) ||
                                        q()
                                  e += U(`0x${i.slice(t, R)}`)
                                  break
                                default:
                                  q()
                              }
                            else {
                              if (o == 34) break
                              for (
                                o = i.charCodeAt(R), t = R;
                                o >= 32 && o != 92 && o != 34;

                              )
                                o = i.charCodeAt(++R)
                              e += i.slice(t, R)
                            }
                          if (i.charCodeAt(R) == 34) return R++, e
                          q()
                        default:
                          if (
                            ((t = R),
                            o == 45 && ((r = !0), (o = i.charCodeAt(++R))),
                            o >= 48 && o <= 57)
                          ) {
                            for (
                              o == 48 &&
                                ((o = i.charCodeAt(R + 1)),
                                o >= 48 && o <= 57) &&
                                q(),
                                r = !1;
                              R < a &&
                              ((o = i.charCodeAt(R)), o >= 48 && o <= 57);
                              R++
                            );
                            if (i.charCodeAt(R) == 46) {
                              for (
                                n = ++R;
                                n < a &&
                                ((o = i.charCodeAt(n)), o >= 48 && o <= 57);
                                n++
                              );
                              n == R && q(), (R = n)
                            }
                            if (((o = i.charCodeAt(R)), o == 101 || o == 69)) {
                              for (
                                o = i.charCodeAt(++R),
                                  (o != 43 && o != 45) || R++,
                                  n = R;
                                n < a &&
                                ((o = i.charCodeAt(n)), o >= 48 && o <= 57);
                                n++
                              );
                              n == R && q(), (R = n)
                            }
                            return +i.slice(t, R)
                          }
                          if ((r && q(), i.slice(R, R + 4) == 'true'))
                            return (R += 4), !0
                          if (i.slice(R, R + 5) == 'false') return (R += 5), !1
                          if (i.slice(R, R + 4) == 'null') return (R += 4), null
                          q()
                      }
                    return '$'
                  },
                  H = function(e) {
                    let t, n
                    if ((e == '$' && q(), typeof e === 'string')) {
                      if ((C ? e.charAt(0) : e[0]) == '@') return e.slice(1)
                      if (e == '[') {
                        for (t = []; (e = W()), e != ']'; n || (n = !0))
                          n && (e == ',' ? ((e = W()), e == ']' && q()) : q()),
                            e == ',' && q(),
                            t.push(H(e))
                        return t
                      }
                      if (e == '{') {
                        for (t = {}; (e = W()), e != '}'; n || (n = !0))
                          n && (e == ',' ? ((e = W()), e == '}' && q()) : q()),
                            (e != ',' &&
                              typeof e === 'string' &&
                              (C ? e.charAt(0) : e[0]) == '@' &&
                              W() == ':') ||
                              q(),
                            (t[e.slice(1)] = H(W()))
                        return t
                      }
                      q()
                    }
                    return e
                  },
                  $ = function(e, t, n) {
                    const r = X(e, t, n)
                    r === y ? delete e[t] : (e[t] = r)
                  },
                  X = function(e, t, n) {
                    let r,
                      o = e[t]
                    if (typeof o === 'object' && o)
                      if (v.call(o) == _) for (r = o.length; r--; ) $(o, r, n)
                      else
                        h(o, e => {
                          $(o, e, n)
                        })
                    return n.call(e, t, o)
                  }
                t.parse = function(e, t) {
                  let n, r
                  return (
                    (R = 0),
                    (L = `${e}`),
                    (n = H(W())),
                    W() != '$' && q(),
                    (R = L = null),
                    t && v.call(t) == k
                      ? X(((r = {}), (r[''] = n), r), '', t)
                      : n
                  )
                }
              }
            }
            return (t.runInContext = i), t
          }
          var a = n(111),
            s = { function: !0, object: !0 },
            c = s[typeof t] && t && !t.nodeType && t,
            u = (s[typeof window] && window) || this,
            l =
              c && s[typeof e] && e && !e.nodeType && typeof o === 'object' && o
          if (
            (!l ||
              (l.global !== l && l.window !== l && l.self !== l) ||
              (u = l),
            c && !a)
          )
            i(u, c)
          else {
            var p = u.JSON,
              f = u.JSON3,
              d = !1,
              m = i(
                u,
                (u.JSON3 = {
                  noConflict() {
                    return (
                      d ||
                        ((d = !0), (u.JSON = p), (u.JSON3 = f), (p = f = null)),
                      m
                    )
                  },
                })
              )
            u.JSON = { parse: m.parse, stringify: m.stringify }
          }
          a &&
            ((r = function() {
              return m
            }.call(t, n, t, e)),
            !(void 0 !== r && (e.exports = r)))
        }.call(this))
      }.call(
        t,
        n(16)(e),
        (function() {
          return this
        })()
      ))
    },
    function(e, t, n) {
      let r = n(106),
        o = n(100),
        i = function(e) {
          return Object.prototype.toString.call(e) === '[object Array]'
        }
      e.exports = function(e) {
        if (!e) return {}
        const t = {}
        return (
          o(r(e).split('\n'), e => {
            let n = e.indexOf(':'),
              o = r(e.slice(0, n)).toLowerCase(),
              a = r(e.slice(n + 1))
            typeof t[o] === 'undefined'
              ? (t[o] = a)
              : i(t[o]) ? t[o].push(a) : (t[o] = [t[o], a])
          }),
          t
        )
      }
    },
    ,
    ,
    function(e, t) {
      function n(e) {
        return e.replace(/^\s*|\s*$/g, '')
      }
      ;(t = e.exports = n),
        (t.left = function(e) {
          return e.replace(/^\s*/, '')
        }),
        (t.right = function(e) {
          return e.replace(/\s*$/, '')
        })
    },
    function(e, t, n) {
      let r
      !(function(t) {
        function o() {}
        function i(e, t) {
          for (let n = e.length; n--; ) if (e[n].listener === t) return n
          return -1
        }
        function a(e) {
          return function() {
            return this[e].apply(this, arguments)
          }
        }
        function s(e) {
          return (
            typeof e === 'function' ||
            e instanceof RegExp ||
            (!(!e || typeof e !== 'object') && s(e.listener))
          )
        }
        let c = o.prototype,
          u = t.EventEmitter
        ;(c.getListeners = function(e) {
          let t,
            n,
            r = this._getEvents()
          if (e instanceof RegExp) {
            t = {}
            for (n in r) r.hasOwnProperty(n) && e.test(n) && (t[n] = r[n])
          } else t = r[e] || (r[e] = [])
          return t
        }),
          (c.flattenListeners = function(e) {
            let t,
              n = []
            for (t = 0; t < e.length; t += 1) n.push(e[t].listener)
            return n
          }),
          (c.getListenersAsObject = function(e) {
            let t,
              n = this.getListeners(e)
            return n instanceof Array && ((t = {}), (t[e] = n)), t || n
          }),
          (c.addListener = function(e, t) {
            if (!s(t)) throw new TypeError('listener must be a function')
            let n,
              r = this.getListenersAsObject(e),
              o = typeof t === 'object'
            for (n in r)
              r.hasOwnProperty(n) &&
                i(r[n], t) === -1 &&
                r[n].push(o ? t : { listener: t, once: !1 })
            return this
          }),
          (c.on = a('addListener')),
          (c.addOnceListener = function(e, t) {
            return this.addListener(e, { listener: t, once: !0 })
          }),
          (c.once = a('addOnceListener')),
          (c.defineEvent = function(e) {
            return this.getListeners(e), this
          }),
          (c.defineEvents = function(e) {
            for (let t = 0; t < e.length; t += 1) this.defineEvent(e[t])
            return this
          }),
          (c.removeListener = function(e, t) {
            let n,
              r,
              o = this.getListenersAsObject(e)
            for (r in o)
              o.hasOwnProperty(r) &&
                ((n = i(o[r], t)), n !== -1 && o[r].splice(n, 1))
            return this
          }),
          (c.off = a('removeListener')),
          (c.addListeners = function(e, t) {
            return this.manipulateListeners(!1, e, t)
          }),
          (c.removeListeners = function(e, t) {
            return this.manipulateListeners(!0, e, t)
          }),
          (c.manipulateListeners = function(e, t, n) {
            let r,
              o,
              i = e ? this.removeListener : this.addListener,
              a = e ? this.removeListeners : this.addListeners
            if (typeof t !== 'object' || t instanceof RegExp)
              for (r = n.length; r--; ) i.call(this, t, n[r])
            else
              for (r in t)
                t.hasOwnProperty(r) &&
                  (o = t[r]) &&
                  (typeof o === 'function'
                    ? i.call(this, r, o)
                    : a.call(this, r, o))
            return this
          }),
          (c.removeEvent = function(e) {
            let t,
              n = typeof e,
              r = this._getEvents()
            if (n === 'string') delete r[e]
            else if (e instanceof RegExp)
              for (t in r) r.hasOwnProperty(t) && e.test(t) && delete r[t]
            else delete this._events
            return this
          }),
          (c.removeAllListeners = a('removeEvent')),
          (c.emitEvent = function(e, t) {
            let n,
              r,
              o,
              i,
              a,
              s = this.getListenersAsObject(e)
            for (i in s)
              if (s.hasOwnProperty(i))
                for (n = s[i].slice(0), o = 0; o < n.length; o++)
                  (r = n[o]),
                    r.once === !0 && this.removeListener(e, r.listener),
                    (a = r.listener.apply(this, t || [])),
                    a === this._getOnceReturnValue() &&
                      this.removeListener(e, r.listener)
            return this
          }),
          (c.trigger = a('emitEvent')),
          (c.emit = function(e) {
            const t = Array.prototype.slice.call(arguments, 1)
            return this.emitEvent(e, t)
          }),
          (c.setOnceReturnValue = function(e) {
            return (this._onceReturnValue = e), this
          }),
          (c._getOnceReturnValue = function() {
            return (
              !this.hasOwnProperty('_onceReturnValue') || this._onceReturnValue
            )
          }),
          (c._getEvents = function() {
            return this._events || (this._events = {})
          }),
          (o.noConflict = function() {
            return (t.EventEmitter = u), o
          }),
          (r = function() {
            return o
          }.call(t, n, t, e)),
          !(void 0 !== r && (e.exports = r))
      })(this || {})
    },
    function(e, t, n) {
      let r, o, i
      !(function(n, a) {
        ;(o = []),
          (r = a),
          (i = typeof r === 'function' ? r.apply(t, o) : r),
          !(void 0 !== i && (e.exports = i))
      })(this, e => {
        return function(t) {
          function n() {
            ;(t.arrayAccessForm = t.arrayAccessForm || 'none'),
              (t.emptyNodeForm = t.emptyNodeForm || 'text'),
              (t.attributeConverters = t.attributeConverters || []),
              (t.datetimeAccessFormPaths = t.datetimeAccessFormPaths || []),
              (t.arrayAccessFormPaths = t.arrayAccessFormPaths || []),
              void 0 === t.enableToStringFunc && (t.enableToStringFunc = !0),
              void 0 === t.skipEmptyTextNodesForObj &&
                (t.skipEmptyTextNodesForObj = !0),
              void 0 === t.stripWhitespaces && (t.stripWhitespaces = !0),
              void 0 === t.useDoubleQuotes && (t.useDoubleQuotes = !0),
              void 0 === t.ignoreRoot && (t.ignoreRoot = !1),
              void 0 === t.escapeMode && (t.escapeMode = !0),
              void 0 === t.attributePrefix && (t.attributePrefix = '_'),
              void 0 === t.selfClosingElements && (t.selfClosingElements = !0),
              void 0 === t.keepCData && (t.keepCData = !1)
          }
          function r() {
            function e(e) {
              let t = String(e)
              return t.length === 1 && (t = `0${t}`), t
            }
            typeof String.prototype.trim !== 'function' &&
              (String.prototype.trim = function() {
                return this.replace(/^\s+|^\n+|(\s|\n)+$/g, '')
              }),
              typeof Date.prototype.toISOString !== 'function' &&
                (Date.prototype.toISOString = function() {
                  const t = 1e3
                  return `${this.getUTCFullYear()}-${e(
                    this.getUTCMonth() + 1
                  )}-${e(this.getUTCDate())}T${e(this.getUTCHours())}:${e(
                    this.getUTCMinutes()
                  )}:${e(this.getUTCSeconds())}.${String(
                    (this.getUTCMilliseconds() / t).toFixed(3)
                  ).slice(2, 5)}Z`
                })
          }
          function o(e) {
            let t = e.localName
            return (
              t == null && (t = e.baseName),
              (t != null && t !== '') || (t = e.nodeName),
              t
            )
          }
          function i(e) {
            return e.prefix
          }
          function a(e) {
            return typeof e === 'string'
              ? e
                  .replace(/&/g, '&amp;')
                  .replace(/</g, '&lt;')
                  .replace(/>/g, '&gt;')
                  .replace(/"/g, '&quot;')
                  .replace(/'/g, '&#x27;')
              : e
          }
          function s(e) {
            return e
              .replace(/&lt;/g, '<')
              .replace(/&gt;/g, '>')
              .replace(/&quot;/g, '"')
              .replace(/&#x27;/g, "'")
              .replace(/&amp;/g, '&')
          }
          function c(e, n, r) {
            switch (t.arrayAccessForm) {
              case 'property':
                e[n] instanceof Array
                  ? (e[`${n}_asArray`] = e[n])
                  : (e[`${n}_asArray`] = [e[n]])
            }
            if (!(e[n] instanceof Array) && t.arrayAccessFormPaths.length > 0) {
              for (var o = !1, i = 0; i < t.arrayAccessFormPaths.length; i++) {
                const a = t.arrayAccessFormPaths[i]
                if (typeof a === 'string') {
                  if (a === r) {
                    o = !0
                    break
                  }
                } else if (a instanceof RegExp) {
                  if (a.test(r)) {
                    o = !0
                    break
                  }
                } else if (typeof a === 'function' && a(n, r)) {
                  o = !0
                  break
                }
              }
              o && (e[n] = [e[n]])
            }
          }
          function u(e) {
            let t = 60,
              n = e.split(/[-T:+Z]/g),
              r = new Date(n[0], n[1] - 1, n[2]),
              o = n[5].split('.')
            if (
              (r.setHours(n[3], n[4], o[0]),
              o.length > 1 && r.setMilliseconds(o[1]),
              n[6] && n[7])
            ) {
              let i = n[6] * t + Number(n[7]),
                a = /\d\d-\d\d:\d\d$/.test(e) ? '-' : '+'
              ;(i = 0 + (a === '-' ? -1 * i : i)),
                r.setMinutes(r.getMinutes() - i - r.getTimezoneOffset())
            } else
              e.indexOf('Z', e.length - 1) !== -1 &&
                (r = new Date(
                  Date.UTC(
                    r.getFullYear(),
                    r.getMonth(),
                    r.getDate(),
                    r.getHours(),
                    r.getMinutes(),
                    r.getSeconds(),
                    r.getMilliseconds()
                  )
                ))
            return r
          }
          function l(e, n, r) {
            if (t.datetimeAccessFormPaths.length > 0)
              for (
                let o = r.split('.#')[0], i = 0;
                i < t.datetimeAccessFormPaths.length;
                i++
              ) {
                const a = t.datetimeAccessFormPaths[i]
                if (typeof a === 'string') {
                  if (a === o) return u(e)
                } else if (a instanceof RegExp) {
                  if (a.test(o)) return u(e)
                } else if (typeof a === 'function' && a(o)) return u(e)
              }
            return e
          }
          function p(e) {
            for (var n = {}, r = e.childNodes, i = 0; i < r.length; i++) {
              const a = r.item(i)
              if (a.nodeType === C.ELEMENT_NODE) {
                const s = o(a)
                t.ignoreRoot ? (n = d(a, s)) : (n[s] = d(a, s))
              }
            }
            return n
          }
          function f(e, n) {
            let r = {}
            r.__cnt = 0
            for (let a = e.childNodes, u = 0; u < a.length; u++) {
              let p = a.item(u),
                f = o(p)
              p.nodeType !== C.COMMENT_NODE &&
                (r.__cnt++,
                r[f] == null
                  ? ((r[f] = d(p, `${n}.${f}`)), c(r, f, `${n}.${f}`))
                  : (r[f] instanceof Array ||
                      ((r[f] = [r[f]]), c(r, f, `${n}.${f}`)),
                    (r[f][r[f].length] = d(p, `${n}.${f}`))))
            }
            for (let m = 0; m < e.attributes.length; m++) {
              const h = e.attributes.item(m)
              r.__cnt++
              for (
                var y = h.value, g = 0;
                g < t.attributeConverters.length;
                g++
              ) {
                const v = t.attributeConverters[g]
                v.test.call(null, h.name, h.value) &&
                  (y = v.convert.call(null, h.name, h.value))
              }
              r[t.attributePrefix + h.name] = y
            }
            const b = i(e)
            return (
              b && (r.__cnt++, (r.__prefix = b)),
              r['#text'] &&
                ((r.__text = r['#text']),
                r.__text instanceof Array && (r.__text = r.__text.join('\n')),
                t.escapeMode && (r.__text = s(r.__text)),
                t.stripWhitespaces && (r.__text = r.__text.trim()),
                delete r['#text'],
                t.arrayAccessForm === 'property' && delete r['#text_asArray'],
                (r.__text = l(r.__text, '#text', `${n}.#text`))),
              r.hasOwnProperty('#cdata-section') &&
                ((r.__cdata = r['#cdata-section']),
                delete r['#cdata-section'],
                t.arrayAccessForm === 'property' &&
                  delete r['#cdata-section_asArray']),
              r.__cnt === 1 && r.__text
                ? (r = r.__text)
                : r.__cnt === 0 && t.emptyNodeForm === 'text'
                  ? (r = '')
                  : r.__cnt > 1 &&
                    void 0 !== r.__text &&
                    t.skipEmptyTextNodesForObj &&
                    ((t.stripWhitespaces && r.__text === '') ||
                      r.__text.trim() === '') &&
                    delete r.__text,
              delete r.__cnt,
              t.keepCData ||
              r.hasOwnProperty('__text') ||
              !r.hasOwnProperty('__cdata')
                ? (t.enableToStringFunc &&
                    (r.__text || r.__cdata) &&
                    (r.toString = function() {
                      return (
                        (this.__text ? this.__text : '') +
                        (this.__cdata ? this.__cdata : '')
                      )
                    }),
                  r)
                : r.__cdata ? r.__cdata : ''
            )
          }
          function d(e, t) {
            return e.nodeType === C.DOCUMENT_NODE
              ? p(e)
              : e.nodeType === C.ELEMENT_NODE
                ? f(e, t)
                : e.nodeType === C.TEXT_NODE ||
                  e.nodeType === C.CDATA_SECTION_NODE
                  ? e.nodeValue
                  : null
          }
          function m(e, n, r, o) {
            let i = `<${e && e.__prefix ? `${e.__prefix}:` : ''}${n}`
            if (r)
              for (let s = 0; s < r.length; s++) {
                let c = r[s],
                  u = e[c]
                t.escapeMode && (u = a(u)),
                  (i += ` ${c.substr(t.attributePrefix.length)}=`),
                  (i += t.useDoubleQuotes ? `"${u}"` : `'${u}'`)
              }
            return (i += o ? ' />' : '>')
          }
          function h(e, t) {
            return `</${e && e.__prefix ? `${e.__prefix}:` : ''}${t}>`
          }
          function y(e, t) {
            return e.indexOf(t, e.length - t.length) !== -1
          }
          function g(e, n) {
            return !!(
              (t.arrayAccessForm === 'property' &&
                y(n.toString(), '_asArray')) ||
              n.toString().indexOf(t.attributePrefix) === 0 ||
              n.toString().indexOf('__') === 0 ||
              e[n] instanceof Function
            )
          }
          function v(e) {
            let t = 0
            if (e instanceof Object) for (const n in e) g(e, n) || t++
            return t
          }
          function b(e) {
            const n = []
            if (e instanceof Object)
              for (const r in e)
                r.toString().indexOf('__') === -1 &&
                  r.toString().indexOf(t.attributePrefix) === 0 &&
                  n.push(r)
            return n
          }
          function w(e) {
            let n = ''
            return (
              e.__cdata && (n += `<![CDATA[${e.__cdata}]]>`),
              e.__text && (n += t.escapeMode ? a(e.__text) : e.__text),
              n
            )
          }
          function k(e) {
            let n = ''
            return (
              e instanceof Object
                ? (n += w(e))
                : e !== null && (n += t.escapeMode ? a(e) : e),
              n
            )
          }
          function T(e, t, n) {
            let r = ''
            if (e.length === 0) r += m(e, t, n, !0)
            else for (let o = 0; o < e.length; o++) r += S(e[o], t, b(e[o]))
            return r
          }
          function S(e, n, r) {
            let o = ''
            if (
              (void 0 !== e && e !== null && e !== '') ||
              !t.selfClosingElements
            )
              if (typeof e === 'object')
                if (Object.prototype.toString.call(e) === '[object Array]')
                  o += T(e, n, r)
                else if (e instanceof Date)
                  (o += m(e, n, r, !1)), (o += e.toISOString()), (o += h(e, n))
                else {
                  const i = v(e)
                  i > 0 || e.__text || e.__cdata
                    ? ((o += m(e, n, r, !1)), (o += M(e)), (o += h(e, n)))
                    : t.selfClosingElements
                      ? (o += m(e, n, r, !0))
                      : ((o += m(e, n, r, !1)), (o += h(e, n)))
                }
              else (o += m(e, n, r, !1)), (o += k(e)), (o += h(e, n))
            else o += m(e, n, r, !0)
            return o
          }
          function M(e) {
            let t = '',
              n = v(e)
            if (n > 0)
              for (const r in e)
                if (!g(e, r)) {
                  let o = e[r],
                    i = b(o)
                  t += S(o, r, i)
                }
            return (t += k(e))
          }
          function _(t) {
            if (void 0 === t) return null
            if (typeof t !== 'string') return null
            let n = null,
              r = null
            if (e) (n = new e()), (r = n.parseFromString(t, 'text/xml'))
            else if (window && window.DOMParser) {
              n = new window.DOMParser()
              let o = null,
                i = window.ActiveXObject || 'ActiveXObject' in window
              if (!i)
                try {
                  o = n.parseFromString('INVALID', 'text/xml').childNodes[0]
                    .namespaceURI
                } catch (a) {
                  o = null
                }
              try {
                ;(r = n.parseFromString(t, 'text/xml')),
                  o !== null &&
                    r.getElementsByTagNameNS(o, 'parsererror').length > 0 &&
                    (r = null)
              } catch (a) {
                r = null
              }
            } else
              t.indexOf('<?') === 0 && (t = t.substr(t.indexOf('?>') + 2)),
                (r = new ActiveXObject('Microsoft.XMLDOM')),
                (r.async = 'false'),
                r.loadXML(t)
            return r
          }
          const x = '3.1.1'
          ;(t = t || {}), n(), r()
          var C = {
            ELEMENT_NODE: 1,
            TEXT_NODE: 3,
            CDATA_SECTION_NODE: 4,
            COMMENT_NODE: 8,
            DOCUMENT_NODE: 9,
          }
          ;(this.asArray = function(e) {
            return void 0 === e || e === null
              ? []
              : e instanceof Array ? e : [e]
          }),
            (this.toXmlDateTime = function(e) {
              return e instanceof Date
                ? e.toISOString()
                : typeof e === 'number' ? new Date(e).toISOString() : null
            }),
            (this.asDateTime = function(e) {
              return typeof e === 'string' ? u(e) : e
            }),
            (this.xml2dom = function(e) {
              return _(e)
            }),
            (this.dom2js = function(e) {
              return d(e, null)
            }),
            (this.js2dom = function(e) {
              const t = this.js2xml(e)
              return _(t)
            }),
            (this.xml2js = function(e) {
              const t = _(e)
              return t != null ? this.dom2js(t) : null
            }),
            (this.js2xml = function(e) {
              return M(e)
            }),
            (this.getVersion = function() {
              return x
            })
        }
      })
    },
    function(e, t, n) {
      function r(e, t) {
        for (let n = 0; n < e.length; n++) t(e[n])
      }
      function o(e) {
        for (const t in e) if (e.hasOwnProperty(t)) return !1
        return !0
      }
      function i(e, t, n) {
        let r = e
        return (
          p(t)
            ? ((n = t), typeof e === 'string' && (r = { uri: e }))
            : (r = d(t, { uri: e })),
          (r.callback = n),
          r
        )
      }
      function a(e, t, n) {
        return (t = i(e, t, n)), s(t)
      }
      function s(e) {
        function t() {
          l.readyState === 4 && setTimeout(i, 0)
        }
        function n() {
          let e = void 0
          if (((e = l.response ? l.response : l.responseText || c(l)), w))
            try {
              e = JSON.parse(e)
            } catch (t) {}
          return e
        }
        function r(e) {
          return (
            clearTimeout(m),
            e instanceof Error ||
              (e = new Error(`${e || 'Unknown XMLHttpRequest Error'}`)),
            (e.statusCode = 0),
            u(e, k)
          )
        }
        function i() {
          if (!d) {
            let t
            clearTimeout(m),
              (t =
                e.useXDR && void 0 === l.status
                  ? 200
                  : l.status === 1223 ? 204 : l.status)
            let r = k,
              o = null
            return (
              t !== 0
                ? ((r = {
                    body: n(),
                    statusCode: t,
                    method: y,
                    headers: {},
                    url: h,
                    rawRequest: l,
                  }),
                  l.getAllResponseHeaders &&
                    (r.headers = f(l.getAllResponseHeaders())))
                : (o = new Error('Internal XMLHttpRequest Error')),
              u(o, r, r.body)
            )
          }
        }
        if (typeof e.callback === 'undefined')
          throw new Error('callback argument missing')
        var s = !1,
          u = function(t, n, r) {
            s || ((s = !0), e.callback(t, n, r))
          },
          l = e.xhr || null
        l ||
          (l =
            e.cors || e.useXDR
              ? new a.XDomainRequest()
              : new a.XMLHttpRequest())
        var p,
          d,
          m,
          h = (l.url = e.uri || e.url),
          y = (l.method = e.method || 'GET'),
          g = e.body || e.data,
          v = (l.headers = e.headers || {}),
          b = !!e.sync,
          w = !1,
          k = {
            body: void 0,
            headers: {},
            statusCode: 0,
            method: y,
            url: h,
            rawRequest: l,
          }
        if (
          ('json' in e &&
            e.json !== !1 &&
            ((w = !0),
            v.accept || v.Accept || (v.Accept = 'application/json'),
            y !== 'GET' &&
              y !== 'HEAD' &&
              (v['content-type'] ||
                v['Content-Type'] ||
                (v['Content-Type'] = 'application/json'),
              (g = JSON.stringify(e.json === !0 ? g : e.json)))),
          (l.onreadystatechange = t),
          (l.onload = i),
          (l.onerror = r),
          (l.onprogress = function() {}),
          (l.onabort = function() {
            d = !0
          }),
          (l.ontimeout = r),
          l.open(y, h, !b, e.username, e.password),
          b || (l.withCredentials = !!e.withCredentials),
          !b &&
            e.timeout > 0 &&
            (m = setTimeout(() => {
              if (!d) {
                ;(d = !0), l.abort('timeout')
                const e = new Error('XMLHttpRequest timeout')
                ;(e.code = 'ETIMEDOUT'), r(e)
              }
            }, e.timeout)),
          l.setRequestHeader)
        )
          for (p in v) v.hasOwnProperty(p) && l.setRequestHeader(p, v[p])
        else if (e.headers && !o(e.headers))
          throw new Error('Headers cannot be set on an XDomainRequest object')
        return (
          'responseType' in e && (l.responseType = e.responseType),
          'beforeSend' in e &&
            typeof e.beforeSend === 'function' &&
            e.beforeSend(l),
          l.send(g || null),
          l
        )
      }
      function c(e) {
        try {
          if (e.responseType === 'document') return e.responseXML
          const t =
            e.responseXML &&
            e.responseXML.documentElement.nodeName === 'parsererror'
          if (e.responseType === '' && !t) return e.responseXML
        } catch (n) {}
        return null
      }
      function u() {}
      var l = n(101),
        p = n(55),
        f = n(103),
        d = n(110)
      ;(e.exports = a),
        (a.XMLHttpRequest = l.XMLHttpRequest || u),
        (a.XDomainRequest =
          'withCredentials' in new a.XMLHttpRequest()
            ? a.XMLHttpRequest
            : l.XDomainRequest),
        r(['get', 'put', 'post', 'patch', 'head', 'delete'], e => {
          a[e === 'delete' ? 'del' : e] = function(t, n, r) {
            return (n = i(t, n, r)), (n.method = e.toUpperCase()), s(n)
          }
        })
    },
    function(e, t) {
      function n() {
        for (var e = {}, t = 0; t < arguments.length; t++) {
          const n = arguments[t]
          for (const o in n) r.call(n, o) && (e[o] = n[o])
        }
        return e
      }
      e.exports = n
      var r = Object.prototype.hasOwnProperty
    },
    function(e, t) {
      ;(function(t) {
        e.exports = t
      }.call(t, {}))
    },
    ,
    ,
    ,
    function(e, t, n) {
      let r = n(38),
        o = n(59)
      o(r), (e.exports = r)
    },
    ,
    function(e, t, n) {
      let r = n(1),
        o = r.undef,
        i = r.verifyOptions,
        a = r.verifyParamType,
        s = n(60),
        c = n(38).fn
      ;(c.updateMyChatroomMemberInfo = function(e) {
        i(e, 'member needNotify'),
          a('needNotify', e.needNotify, 'boolean'),
          (e.needSave = e.needSave || !1),
          a('needSave', e.needSave, 'boolean'),
          this.processCustom(e),
          this.processCallback(e),
          (e.chatroomMember = new s(e.member)),
          this.sendCmd('updateMyChatroomMemberInfo', e)
      }),
        (c.getChatroomMembers = function(e) {
          const t = this
          i(e, 'guest'),
            a('guest', e.guest, 'boolean'),
            o(e.time) ? (e.time = 0) : a('time', e.time, 'number'),
            o(e.limit) ? (e.limit = 100) : a('limit', e.limit, 'number'),
            t.processCallback(e),
            (e.type = e.guest ? 1 : 0),
            !e.guest && e.onlyOnline && (e.type = 2),
            t.sendCmd('getChatroomMembers', e)
        }),
        (c.getChatroomMembersInfo = function(e) {
          const t = this
          i(e, 'accounts'),
            a('accounts', e.accounts, 'array'),
            t.processCallback(e),
            t.sendCmd('getChatroomMembersInfo', e)
        }),
        (c.markChatroomManager = function(e) {
          ;(e.type = 1), this.markChatroomMember(e)
        }),
        (c.markChatroomCommonMember = function(e) {
          ;(e.type = 2), this.markChatroomMember(e)
        }),
        (c.markChatroomBlacklist = function(e) {
          ;(e.type = -1), this.markChatroomMember(e)
        }),
        (c.markChatroomGaglist = function(e) {
          ;(e.type = -2), this.markChatroomMember(e)
        }),
        (c.markChatroomMember = function(e) {
          i(e, 'account type isAdd'),
            a('isAdd', e.isAdd, 'boolean'),
            o(e.level) ? (e.level = 0) : a('level', e.level, 'number')
          const t = this
          t.processCustom(e),
            t.processCallback(e),
            t.sendCmd('markChatroomMember', e)
        }),
        (c.kickChatroomMember = function(e) {
          const t = this
          i(e, 'account'),
            t.processCustom(e),
            t.processCallback(e),
            t.sendCmd('kickChatroomMember', e)
        }),
        (c.updateChatroomMemberTempMute = function(e) {
          const t = this
          i(e, 'account duration needNotify'),
            a('duration', e.duration, 'number'),
            a('needNotify', e.needNotify, 'boolean'),
            t.processCustom(e),
            t.processCallback(e),
            t.sendCmd('updateChatroomMemberTempMute', e)
        }),
        (c.getRobotList = function(e) {
          const t = this
          o(e.timetag) && (e.timetag = 0),
            t.processCallback(e),
            t.sendCmd('syncRobot', e)
        })
    },
    function(e, t, n) {
      let r = n(1),
        o = r.undef,
        i = n(38).fn
      i.beforeSendMsg = function(e) {
        e.cmd = 'sendMsg'
      }
      const a = {
        text: 0,
        image: 1,
        audio: 2,
        video: 3,
        geo: 4,
        notification: 5,
        file: 6,
        tip: 10,
        robot: 11,
        custom: 100,
      }
      i.getHistoryMsgs = function(e) {
        r.verifyOptions(e),
          o(e.timetag)
            ? (e.timetag = 0)
            : r.verifyParamType('timetag', e.timetag, 'number'),
          o(e.limit)
            ? (e.limit = 100)
            : r.verifyParamType('limit', e.limit, 'number'),
          o(e.reverse)
            ? (e.reverse = !1)
            : r.verifyParamType('reverse', e.reverse, 'boolean'),
          o(e.msgTypes)
            ? (e.msgTypes = [])
            : Array.isArray(e.msgTypes)
              ? ((e.msgTypes = e.msgTypes.map(e => {
                  return a[e]
                })),
                (e.msgTypes = e.msgTypes.filter(e => {
                  return typeof e === 'number'
                })))
              : typeof a[e.msgTypes] === 'number'
                ? (e.msgTypes = [a[e.msgTypes]])
                : (e.msgTypes = [])
        const t = this
        t.processCallback(e),
          t.sendCmd('getHistoryMsgs', e, (t, n, r) => {
            Array.isArray(r) &&
              (r = r.map(e => {
                return a[e.type] && (e.type = a[e.type]), e
              })),
              e.callback(t, n, r)
          })
      }
    },
    function(e, t, n) {
      let r = n(38).fn,
        o = n(1)
      ;(r.queueOffer = function(e) {
        o.verifyOptions(e, 'elementKey elementValue'),
          e.transient ? (e.transient = !0) : (e.transient = !1),
          this.processCallback(e),
          this.sendCmd('queueOffer', e, e.callback)
      }),
        (r.queuePoll = function() {
          const e =
            arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
          ;(e.elementKey = e.elementKey || ''),
            this.processCallback(e),
            this.sendCmd('queuePoll', e, e.callback)
        }),
        (r.queueList = function(e) {
          this.processCallback(e), this.sendCmd('queueList', e, e.callback)
        }),
        (r.peak = function(e) {
          this.processCallback(e), this.sendCmd('peak', e, e.callback)
        }),
        (r.queueDrop = function(e) {
          this.processCallback(e), this.sendCmd('queueDrop', e, e.callback)
        })
    },
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    function(e, t, n) {
      function r() {}
      let o = n(39),
        i = n(1)
      ;(r.prototype = Object.create(o.prototype)),
        (r.verifyFile = function(e) {
          i.verifyOptions(e, 'dur', !0, 'file.')
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      function r(e) {
        i.verifyOptions(e, 'content'),
          (e.type = 'custom'),
          o.call(this, e),
          typeof e.content !== 'string' &&
            (e.content = JSON.stringify(e.content)),
          (this.attach = e.content)
      }
      var o = n(18),
        i = n(1)
      ;(r.prototype = Object.create(o.prototype)),
        (r.reverse = function(e) {
          const t = o.reverse(e)
          return (t.content = e.attach), t
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      function r(e) {
        ;(e.type = 'geo'),
          i.verifyOptions(e, 'geo'),
          i.verifyOptions(e.geo, 'lng lat title', !0, 'geo.'),
          i.verifyParamType('geo.lng', e.geo.lng, 'number'),
          i.verifyParamType('geo.lat', e.geo.lat, 'number'),
          i.verifyParamType('geo.title', e.geo.title, 'string'),
          o.call(this, e),
          (this.attach = JSON.stringify(e.geo))
      }
      var o = n(18),
        i = n(1)
      ;(r.prototype = Object.create(o.prototype)),
        (r.reverse = function(e) {
          const t = o.reverse(e)
          return (
            (e.attach = e.attach ? `${e.attach}` : ''),
            (t.geo = e.attach ? JSON.parse(e.attach) : {}),
            t
          )
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      function r() {}
      let o = n(1),
        i = n(39)
      ;(r.prototype = Object.create(i.prototype)),
        (r.verifyFile = function(e) {
          o.verifyOptions(e, 'w h', !0, 'file.')
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      let r = n(1),
        o = function(e) {
          this.account = e.account
        },
        i = o.prototype,
        a = (i.Message = n(18)),
        s = (i.TextMessage = n(156)),
        c = (i.FileMessage = n(39)),
        u = (i.GeoMessage = n(151)),
        l = (i.NotificationMessage = n(154)),
        p = (i.CustomMessage = n(150)),
        f = (i.TipMessage = n(157)),
        d = (i.RobotMessage = n(155))
      ;(i.validTypes = a.validTypes),
        (i.reverse = function(e) {
          let t,
            n = a.getType(e)
          switch (n) {
            case 'text':
              t = s.reverse(e)
              break
            case 'image':
            case 'audio':
            case 'video':
            case 'file':
              ;(e.enabledHttpsForMessage = this.enabledHttpsForMessage),
                (t = c.reverse(e))
              break
            case 'geo':
              t = u.reverse(e)
              break
            case 'notification':
              t = l.reverse(e)
              break
            case 'custom':
              t = p.reverse(e)
              break
            case 'tip':
              t = f.reverse(e)
              break
            case 'robot':
              t = d.reverse(e)
              break
            default:
              t = a.reverse(e)
          }
          return a.setExtra(t, this.account), t
        }),
        (i.reverseMsgs = function(e, t) {
          let n,
            o,
            i = this
          return e.map(e => {
            return (
              (e = i.reverse(e)),
              t &&
                ((n = t.modifyObj),
                n && (e = r.merge(e, n)),
                (o = t.mapper),
                r.isFunction(o) && (e = o(e))),
              e
            )
          })
        }),
        (e.exports = o)
    },
    function(e, t, n) {
      function r() {}
      let o = n(1),
        i = o.notundef,
        a = n(18),
        s = {
          301: 'memberEnter',
          302: 'memberExit',
          303: 'blackMember',
          304: 'unblackMember',
          305: 'gagMember',
          306: 'ungagMember',
          307: 'addManager',
          308: 'removeManager',
          309: 'addCommon',
          310: 'removeCommon',
          311: 'closeChatroom',
          312: 'updateChatroom',
          313: 'kickMember',
          314: 'addTempMute',
          315: 'removeTempMute',
          316: 'updateMemberInfo',
          317: 'updateQueue',
          318: 'muteRoom',
          319: 'unmuteRoom',
          320: 'batchUpdateQueue',
        }
      ;(r.prototype = Object.create(a.prototype)),
        (r.reverse = function(e) {
          const t = a.reverse(e)
          if (((e.attach = e.attach ? `${e.attach}` : ''), e.attach)) {
            const n = JSON.parse(e.attach)
            if (((t.attach = { type: s[n.id] }), i(n.data))) {
              const r = n.data
              if (
                (i(r.operator) && (t.attach.from = r.operator),
                i(r.opeNick) && (t.attach.fromNick = r.opeNick),
                i(r.target) && (t.attach.to = r.target),
                i(r.tarNick) && (t.attach.toNick = r.tarNick),
                i(r.muteDuration) &&
                  (t.attach.duration = parseInt(r.muteDuration, 10)),
                t.attach.type === 'memberEnter' &&
                  (i(r.muted)
                    ? (t.attach.gaged = +r.muted === 1)
                    : (t.attach.gaged = !1),
                  i(r.tempMuted)
                    ? (t.attach.tempMuted = +r.tempMuted === 1)
                    : (t.attach.tempMuted = !1),
                  i(r.muteTtl)
                    ? (t.attach.tempMuteDuration = +r.muteTtl)
                    : (t.attach.tempMuteDuration = 0)),
                i(r.ext) && (t.attach.custom = r.ext),
                i(r.queueChange))
              ) {
                const o = JSON.parse(r.queueChange)
                switch (o._e) {
                  case 'OFFER':
                    t.attach.queueChange = {
                      type: 'OFFER',
                      elementKey: o.key,
                      elementValue: o.content,
                    }
                    break
                  case 'POLL':
                    t.attach.queueChange = {
                      type: 'POLL',
                      elementKey: o.key,
                      elementValue: o.content,
                    }
                    break
                  case 'DROP':
                    t.attach.queueChange = { type: 'DROP' }
                    break
                  case 'PARTCLEAR':
                    t.attach.queueChange = {
                      type: 'PARTCLEAR',
                      elementKv: o.kvObject,
                    }
                }
              }
            }
          } else t.attach = {}
          return t
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      function r(e) {
        i.verifyOptions(e, 'content')
        let t = e.content
        switch (t.type) {
          case 'welcome':
            i.undef(e.body) && (this.body = '欢迎消息')
            break
          case 'text':
            i.verifyOptions(t, 'content'),
              i.undef(e.body) && (this.body = t.content)
            break
          case 'link':
            i.verifyOptions(t, 'target')
        }
        t.type && (t.type = a[t.type]),
          (t = { param: t, robotAccid: e.robotAccid }),
          (this.attach = JSON.stringify(t)),
          (e.type = 'robot'),
          o.call(this, e)
      }
      var o = n(18),
        i = n(1),
        a = { welcome: '00', text: '01', link: '03' },
        s = { '01': 'text', '02': 'image', '03': 'answer', 11: 'template' }
      ;(r.prototype = Object.create(o.prototype)),
        (r.reverse = function(e) {
          const t = o.reverse(e)
          if (t.type === 'robot') {
            let n = JSON.parse(e.attach)
            if (
              (n.param && (n.param.type = s[n.param.type] || 'unknown'),
              n.robotMsg)
            ) {
              n = i.merge(n, n.robotMsg)
              const r = n.message
              n.flag === 'bot'
                ? (n.message = r.map(e => {
                    return (e.type = s[e.type] || 'unknown'), e
                  }))
                : n.flag === 'faq',
                delete n.robotMsg
            }
            t.content = n
          }
          return t
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      function r(e) {
        i.verifyOptions(e, 'text'),
          (e.type = 'text'),
          o.call(this, e),
          (this.attach = e.text)
      }
      var o = n(18),
        i = n(1)
      ;(r.prototype = Object.create(o.prototype)),
        (r.reverse = function(e) {
          const t = o.reverse(e)
          return (t.text = e.attach), t
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      function r(e) {
        i.verifyOptions(e, 'tip'),
          (e.type = 'tip'),
          o.call(this, e),
          (this.attach = e.tip)
      }
      var o = n(18),
        i = n(1)
      ;(r.prototype = Object.create(o.prototype)),
        (r.reverse = function(e) {
          const t = o.reverse(e)
          return (t.tip = e.attach), t
        }),
        (e.exports = r)
    },
    function(e, t, n) {
      function r() {}
      let o = n(39),
        i = n(1)
      ;(r.prototype = Object.create(o.prototype)),
        (r.verifyFile = function(e) {
          i.verifyOptions(e, 'dur w h', !0, 'file.')
        }),
        (e.exports = r)
    },
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    function(e, t, n) {
      let r = n(33).fn,
        o = n(15),
        i = n(1)
      ;(r.assembleLogin = function() {
        let e = this,
          t = e.options,
          n = {
            appKey: t.appKey,
            account: t.account,
            deviceId: o.deviceId,
            chatroomId: t.chatroomId,
            session: e.genSessionKey(),
          }
        return (
          (n = i.merge(
            n,
            i.filterObj(
              t,
              'chatroomNick chatroomAvatar chatroomCustom chatroomEnterCustom isAnonymous'
            )
          )),
          { type: 1, login: n, imLogin: e.assembleIMLogin() }
        )
      }),
        (r.afterLogin = function(e) {
          let t = this,
            n = e.chatroom
          ;(t.chatroom = n), t.notifyLogin()
        }),
        (r.kickedReasons = [
          '',
          'chatroomClosed',
          'managerKick',
          'samePlatformKick',
          'silentlyKick',
          'blacked',
        ]),
        (r.kickedMessages = [
          '',
          '聊天室关闭了',
          '被房主或者管理员踢出',
          '不允许同一个帐号在多个地方同时登录',
          '悄悄被踢',
          '被拉黑了',
        ])
    },
    function(e, t, n) {
      const r = n(33).fn
      r.refreshSocketUrl = function() {
        const e = this
        ;(e.socketUrls = e.socketUrlsBackup.slice(0)),
          e.logger.info('link::refreshSocketUrl'),
          e.connectToUrl(e.getNextSocketUrl())
      }
    },
    function(e, t, n) {
      let r = n(33).fn,
        o = n(60)
      ;(r.onChatroomMembersInfo = r.onChatroomMembers = function(e) {
        e.error || (e.obj.members = o.reverseMembers(e.content.members))
      }),
        (r.onMarkChatroomMember = function(e) {
          e.error || (e.obj.member = o.reverse(e.content.chatroomMember))
        }),
        (r.onSyncRobot = function(e) {
          !e.error && this.options.onrobots
            ? this.options.onrobots(null, e.content)
            : this.ontions.onrobots(e.error, {})
        })
    },
    function(e, t, n) {
      let r = n(33).fn,
        o = n(1)
      ;(r.completeMsg = function(e) {
        const t = this
        ;(e.chatroomId = t.chatroom.id),
          (e.from = t.options.account),
          (e.fromClientType = 'Web'),
          e.time || (e.time = +new Date())
      }),
        (r.onMsg = function(e) {
          let t = this,
            n = t.message.reverse(e.content.msg)
          t.checkMsgUnique(n) &&
            (t.msgBuffer.push(n), t.msgFlushTimer || t.startMsgFlushTimer())
        }),
        (r.startMsgFlushTimer = function() {
          let e = this,
            t = e.options
          e.msgFlushTimer = setTimeout(() => {
            const n = e.msgBuffer.splice(0, t.msgBufferSize)
            e.options.onmsgs(n),
              e.msgBuffer.length
                ? e.startMsgFlushTimer()
                : delete e.msgFlushTimer
          }, t.msgBufferInterval)
        }),
        (r.checkMsgUnique = o.genCheckUniqueFunc('idClient')),
        (r.onSendMsg = function(e) {
          let t = e.obj.msg
          e.error
            ? (t.status = 'fail')
            : ((t = e.content.msg), (t.status = 'success')),
            (t = this.message.reverse(t)),
            (e.obj = t)
        }),
        (r.onHistoryMsgs = function(e) {
          e.error || (e.obj.msgs = this.message.reverseMsgs(e.content.msgs))
        })
    },
  ])
})
